Quelqu'un peut-il dire, quelle est la différence entre les deux déclarations suivantes:
TimeZone.getTimeZone("America/New_York")
et
TimeZone.getTimeZone("EST")
En d'autres termes, pourquoi EST est-il différent de America/New_York. Également dans mon application, pour obtenir le fuseau horaire actuel aux États-Unis, dois-je utiliser America/New_York ou EST.
EST est la moitié du fuseau horaire de New York, effectivement. C'est toujours en heure standard - il n'a pas la partie heure d'été. Ce n'est pas vraiment un fuseau horaire à part entière, OMI - c'est la partie "standard" d'un fuseau horaire plus complet. Lorsque j'écris sur un fuseau horaire qui est juste un décalage fixe et non lié à un endroit particulier, je préfère utiliser "Etc/GMT + 5 "ou quelque chose de même évidemment fixé. (Je n'aime généralement pas même "Eastern Time" et autres, car différents endroits qui observent "Eastern Time" peuvent varier dans leurs transitions DST. C'est un peu comme appeler un codage "ASCII étendu" ... cela vous dit quelques informations , mais pas assez.)
Donc, si vous voulez connaître l'heure locale réelle pour New York à un instant donné, utilisez America/New_York.
En général, éloignez-vous des abréviations. De la documentation :
Pour des raisons de compatibilité avec JDK 1.1.x, certains autres ID de fuseau horaire à trois lettres (tels que "PST", "CTT", "AST") sont également pris en charge. Cependant, leur utilisation est déconseillée car la même abréviation est souvent utilisée pour plusieurs fuseaux horaires (par exemple, "CST" pourrait être US "Central Standard Time" et "China Standard Time"), et la plate-forme Java peut alors seulement reconnaître l'un d'eux.
(Personnellement, je vous conseillerais également de rester à l'écart de Date
et Calendar
, préférant utiliser Joda Time dans la mesure du possible. C'est une autre chose cependant, vraiment.)
EST est UTC - 5 heures. America/New_York est EST en hiver et E * D * T en été, donc en ce moment New York est UTC - 4 heures.