Java 8 égalité de temps UTC et Zulu?
Que je pouvais la recherche, l'UTC et l'Zoulou sont les mêmes. Cependant, je suis en cours d'exécution dans les difficultés de la comparaison de deux ZonedDateTimes je reçois à partir de différentes sources dans mon code.
Le code suivant illustre le problème:
@Test
public void equalsOnTimezone() throws Exception {
ZonedDateTime zdtUtc = ZonedDateTime.of(2015, 2, 1, 14, 30, 0, 0, ZoneId.of("UTC"));
ZonedDateTime zdtZ = ZonedDateTime.of(2015, 2, 1, 14, 30, 0, 0, ZoneId.of("Z"));
assertEquals(zdtUtc, zdtZ); //will fail
}
Le problème:
java.lang.AssertionError: expected:<2015-02-01T14:30Z[UTC]> but was:<2015-02-01T14:30Z>
Et ce sera la bonne façon de créer et comparer UTC valeurs alors?
Selon le W3C Formats de Date et Heure:
Les heures sont exprimées en heure UTC (Temps Universel Coordonné), avec une spéciale de l'UTC de désignation ("Z").
source d'informationauteur Dag
Vous devez vous connecter pour publier un commentaire.
Selon le code source,
ZonedDateTime.equals
utiliseZoneId.equals
de comparer l'id de zone de composant, et qui, à son tour compare les id plutôt que de les décalages.Si vous voulez deux ZonedDateTime avec "différent, mais équivalent" de la zone id de comparer égal, vous devez créer comme ceci:
Je pense que c'est un cas où vos attentes (basé sur le W3C de la documentation pour les représentations de chaîne) ne correspondent pas à la documentation de la sémantique de la classe Java. Dans de tels cas, la javadoc est définitive.
(Ce n'est PAS un Java 8 bug, de l'OMI.)