Come stampare abbreviazioni fuso orario quando si utilizza ore compensati Joda Time?

StackOverflow https://stackoverflow.com/questions/1718484

  •  19-09-2019
  •  | 
  •  

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top