Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    delucidazione DateFormat

    Sto esplorando un po' le varie funzionalità di questo componente, e in particolare della sua utilissima sottoclasse SimpleDateFormat.

    Il mio problema consiste nel poter leggere e stampare il timezone sottoforma di offset GMT. Vedo che il parsing funziona bene, ma nella stampa utilizzando il parametro z minuscolo mi restituisce la zona geografica abbreviata. Come faccio a cambiarlo?
    Digicasper ;-)

  2. #2
    Nei javadoc ci sono vari esempi
    http://java.sun.com/j2se/1.5.0/docs/...ateFormat.html

    se ho capito quello che ti serve lo dovresti fare con Z (maiuscola)

  3. #3
    no, non intendo quello.
    Se vedi la tabella, alla riga del parametro z minuscolo, con il parsing (in quell'esempio specifico) "Pacific Standard Time", "PST" e GMT-08:00" sono equivalenti. Però formattando la stampa di default inserisce "PST", io invece vorrei che mi restituisse "GMT-08:00".
    Me lo devo ricavare a mano?
    Spero di essere stato chiaro
    Digicasper ;-)

  4. #4
    Originariamente inviato da digicasper
    io invece vorrei che mi restituisse "GMT-08:00".
    E' quello che torna la Z maiuscola, l'offset GMT, senza la scritta 'GMT' ma quella la puoi aggiungere tu mettendola tra ''.

    prova questo pezzo di codice
    codice:
        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm 'GMT'Z");
        String d = df.format(new Date());
        System.out.println(d);
    stampa '19/01/2010 14:52 GMT+0100'

  5. #5
    Ho risolto.

    non è molto intuitiva come cosa, ma dipende da come imposti il timezone.
    nello specifico:
    codice:
    sdf.setTimeZone(TimeZone.getTimeZone("GMT+2"));
    Digicasper ;-)

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da digicasper
    non è molto intuitiva come cosa
    A me pare molto intuitiva invece ....

    Originariamente inviato da digicasper
    ma dipende da come imposti il timezone.
    Ma c'è comunque un timezone di "default" ... quello del sistema! Se ti è venuto in mente che devi forzare tu un certo timezone allora o vuoi davvero mostrare quel timezone oppure qualcosa non quadra nel tuo sistema.

    Se io sul mio PC eseguo:

    codice:
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm 'GMT'Z");
    System.out.println(sdf.format(new Date()));
    A me stampa:

    19/01/2010 16:57 GMT+0100

    Che rispecchia il fatto che qui in Italia il fuso orario è +1 (e siamo adesso nell'ora solare) e che nel mio sistema operativo ho configurato il fuso orario appunto come GMT + 1.00h

    Se eseguissi anche:
    sdf.setTimeZone(TimeZone.getTimeZone("GMT+2"));

    stamperebbe:

    19/01/2010 17:57 GMT+0200

    Che è sì corretta/coerente come indicazione del tempo in sé ma rispecchierebbe un altro fuso orario. Che non centra nulla con il nostro attuale.

    Più intuitivo di così .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    non ci siamo capiti.

    il mio problema era semplicemente di rappresentazione:
    se inserisco TimeZone.getTimeZone("Europe/Rome") stampa 'CEST'
    se inserisco TimeZone.getTimeZone("GMT+1") stampa 'GMT+01:00'
    che è una gran comodità, intendiamoci, ma ci sono arrivato a tentativi
    Non sapevo che TimeZone si occupasse anche di come rappresentare il fuso orario, e quindi la soluzione la cercavo semplicemente nella DateFormat.

    Grazie comunque.
    Digicasper ;-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.