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
,ZonedDateTime
etInstant
tout stocker un instant sur la time-line à la précision nanoseconde.Instant
est le plus simple, représentant simplement l'instant.OffsetDateTime
ajoute à l'instant le décalage de UTC/Greenwich, ce qui permet d'obtenir la date-heure locale.ZonedDateTime
ajoute 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.