Come stampare abbreviazioni fuso orario quando si utilizza ore compensati Joda Time?
Domanda
sto usando Joda tempo, e devo essere DateTimeZones passati che vengono creati utilizzando DateTimeZone.forOffsetHours()
. Mi piacerebbe stampare questi fusi orari utilizzando acronimi fuso orario standard come "PST", "est", ecc.
Tuttavia, ogni volta stampo DateTimes che utilizzano questi fusi orari, ottengo un "hh: mm" rappresentazione del fuso orario al posto della sigla nome
.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) )) );
}
}
C'è un modo per stampare l'acronimo fuso orario appropriata nell'ultimo esempio utilizzando Joda Time?
Soluzione
No, non è possibile, ma non è un problema di Joda-tempo, è a causa di come fusi orari di lavoro.
L'offset (ad esempio UTC-8) non determina la posizione, quindi anche non determina la sigla che dipende dalla posizione. Come si può vedere qui , v'è UTC-8 in più fusi orari.
Il primo esempio funziona perché il fuso orario predefinito è PST. La seconda funziona perché si chiede un fuso orario con il suo nome (con tutta la roba legale, etc.). Nella terza si ottiene un fuso orario fisso-offset che non ha nome ad esso associato.