Quelle est la différence entre java 8 ZonedDateTime et OffsetDateTime?
j'ai lu la documentation, mais je ne vois toujours pas quand je devrais utiliser l'une ou l'autre:
Selon la documentation OffsetDateTime doit être utilisé lors de l'écriture de la date de la base de données, mais je ne comprends pas pourquoi.
1 réponses
les javadocs disent ceci:
"
OffsetDateTime,ZonedDateTimeetInstanttout stocker un instant sur la time-line à la précision nanoseconde.Instantest le plus simple, représentant simplement l'instant.OffsetDateTimeajoute à l'instant le décalage de UTC/Greenwich, ce qui permet d'obtenir la date-heure locale.ZonedDateTimeajoute des règles de fuseaux horaires."
Source: https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html
ainsi, la différence entre OffsetDateTime et ZonedDateTime est que cette dernière inclut les règles qui couvrent les ajustements d'heure d'été.
OffsetDateTime devrait être utilisé lors de l'écriture de date à la base de données, mais je ne comprends pas pourquoi.
une raison est que les dates avec des décalages d'heure locale toujours représentent les mêmes instants dans le temps, et ont donc un ordre stable. En revanche, la signification des dates avec des informations de fuseau horaire à plein temps est instable face aux ajustements des règles pour les fuseaux horaires respectifs. (Et elles ne se produisent...)
Dates dont le sens / l'ordre est instable sont problématiques si (par exemple) vous créez un index de base de données sur un champ la date.