2009-11-11 12 views
7

Sto utilizzando Joda Time e mi vengono date DateTimeZones create utilizzando DateTimeZone.forOffsetHours(). Mi piacerebbe stampare questi fusi orari utilizzando acronimi fuso orario standard come "PST", "EST", eccCome stampare le abbreviazioni dei fusi orari quando si usano le ore di offset in Joda Time?

Tuttavia, ogni volta stampo DateTimes che utilizzano questi fusi orari, ottengo un "hh: mm" rappresentazione del fuso orario invece del nome acronimo.

Ecco un esempio:

public class tmp { 
    public static void main(String args[]) { 
     // "PST" 
     System.out.println(DateTimeFormat.forPattern("z").print(new DateTime())); 

     // "PST" 
     System.out.println(DateTimeFormat.forPattern("z").print(new DateTime(DateTimeZone.forTimeZone(TimeZone.getTimeZone("PST"))))); 

     // "-08:00" 
     System.out.println(DateTimeFormat.forPattern("z").print(new DateTime(DateTimeZone.forOffsetHours(-8)))); 
    } 
} 

Esiste un modo per stampare l'acronimo fuso orario appropriata nell'ultimo esempio utilizzando Joda Time?

risposta

6

No, non è possibile, ma non è un problema di joda-time, è a causa di come funzionano i fusi orari.

L'offset (ad esempio UTC-8) non determina la posizione, quindi non determina anche l'acronimo che dipende dalla posizione. Come si può vedere here, c'è UTC-8 in più fusi orari.

Il primo esempio funziona perché il fuso orario predefinito è PST. Il secondo funziona perché chiedi un fuso orario per nome (con tutto il materiale per l'ora legale, ecc.). Nella terza si ottiene un fuso orario con offset fisso che non ha alcun nome associato ad esso.

+0

Vedo. Stavo pensando che potrebbe essere qualcosa di simile. Grazie per le informazioni, questo ha senso. – emmby