Comment imprimer des abréviations du fuseau horaire lorsque vous utilisez des heures de décalage en temps de Joda?

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

  •  19-09-2019
  •  | 
  •  

Question

J'utilise le temps de Joda, et je suis passé DateTimeZone.forOffsetHours(). Je voudrais imprimer ces fuseaux horaires en utilisant des acronymes de fuseau horaire standard tels que "PST", "EST", etc.

Cependant, chaque fois que j'imprime les temps qui utilisent ces fuseaux horaires, j'obtiens une représentation "HH: MM" du fuseau horaire au lieu de l'acronyme de nom.

Voici un exemple:

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) )) );
    }
}

Existe-t-il un moyen d'imprimer l'acronyme de fuseau horaire approprié dans le dernier exemple en utilisant Joda Time?

Était-ce utile?

La solution

Non, ce n'est pas possible, mais ce n'est pas un problème de joda, c'est à cause de la façon dont les fuseaux horaires fonctionnent.

Le décalage (par exemple UTC-8) ne détermine pas l'emplacement, il ne détermine donc pas l'acronyme qui dépend de l'emplacement. Comme tu peux le voir ici, il y a UTC-8 dans plusieurs fuseaux horaires.

Le premier exemple fonctionne car votre fuseau horaire par défaut est PST. Le second fonctionne parce que vous demandez un fuseau horaire par son nom (avec toutes les trucs de la lumière du jour, etc.). Dans le troisième, vous obtenez un fuseau horaire à décalage fixe qui n'a aucun nom qui lui est associé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top