Est En Le Fuseau Horaire.setTimeZone(“hne”) différente de Fuseau horaire.setTimeZone(“HNE”)
Quand j'ai écris ce code:
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("EST"));
System.out.println(cal.getTimeZone().getDisplayName());
La sortie est
Eastern Standard Time
Mais quand j'ai écris ce code:
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("est"));
System.out.println(cal.getTimeZone().getDisplayName());
La sortie que je reçois est:
GMT-05:00
Est-il une différence en donnant des arguments comme "EST" et "est" lors de la configuration de TimeZone.setTimeZone(String str)
(Est str
être transmis lors de l'appel considéré comme SENSIBLE à la casse)?
L'API ne mentionne rien à ce sujet:
getTimeZone
public static TimeZone getTimeZone(String ID)
Gets the TimeZone for the given ID.
Parameters:
ID - the ID for a TimeZone, either an abbreviation such as "PST", a full name such as "America/Los_Angeles", or a custom ID such as "GMT-8:00".
Note that the support of abbreviations is for JDK 1.1.x compatibility only and full names should be used.
Returns:
the specified TimeZone, or the GMT zone if the given ID cannot be understood.
NOTE: j'ai essayé avec IST
et ist
cordes. Pour IST
chaîne, il donne Indian Standard Time
et pour ist
il donne Greenwich Mean Time
- en bas de l'électeur, veuillez laisser un commentaire.
Vous devez vous connecter pour publier un commentaire.
En bref, oui, il est sensible à la casse.
Suivant vos exemples
ist
vous donneGMT
parce qu'un fuseau horaire avec un ID ne peut pas être trouvé, vous donnant ainsi des résultats par défautil fonctionne avec
est
(GMT-05:00
estEASTERN STANDARD TIME
), sûrement parce que les deux noms sont connus, mais je ne voudrais pas compter sur elle (pas trop sûr qu'il serait toujours là si le changement de plate-forme).En outre, comme l'a dit par l'API, vous ne devriez pas utiliser ces abrégé Id mais directement le nom complet ou l'IDENTIFIANT personnalisé.
Vous pouvez avoir une liste de votre plate-forme de codes disponibles à l'aide de
TimeZone.getAvailableIDs()
, alors vous pouvez choisir le bon.J'ai moi-même envisagez d'utiliser
GMT-5:00
format, qui est à mon avis plus lisible et moins sujette aux erreurs.La mise en œuvre de getTimeZone(String id) a réellement changé de JDK 7 à 8.
Dans le JDK 7 "est" est en fait le retour d'un fuseau horaire avec l'id "est". L'exécution de la suite de cas de test sur java 7 va réussir (et d'échouer sur l'île de java 8):
Avec Java 8 le fuseau horaire "est" est en fait manipulé comme un inconnu fuseau horaire et en fait le retour à l'heure GMT fuseau horaire avec l'id "GMT". Les cas de test qui suit permettra de réussir sur Java 8 (et d'échouer sur l'île de java 7).