I javadocs dicono questo:
"OffsetDateTime
, ZonedDateTime
e Instant
tutte memorizzare un istante sul time-line per nanosecondo precisione Instant
è il più semplice, è sufficiente che rappresenta l'istante OffsetDateTime
aggiunge all'istante.. lo scostamento da UTC/Greenwich, che consente di ottenere la data ora locale. ZonedDateTime
aggiunge le regole complete per il fuso orario. "
Fonte: https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html
Così la differenza tra OffsetDateTime
e ZonedDateTime
è che quest'ultimo include le regole che riguardano il risparmio di luce del giorno regolazioni dell'ora.
OffsetDateTime deve essere utilizzato quando si scrive la data nel database, ma non capisco perché.
Un motivo è che le date con offset di ora locali rappresentano sempre gli stessi istanti nel tempo e pertanto hanno un ordine stabile. Al contrario, il significato di date con informazioni complete sul fuso orario è instabile a fronte di aggiustamenti delle regole per i rispettivi fusi orari. (E questi accadono ...)
Le date il cui significato/ordine è instabile sono problematici se (ad esempio) si crea un indice di database su un campo la data.
fonte
2015-05-14 10:27:00
Fondamentalmente un 'ZonedDateTime' contiene anche informazioni sui fusi orari, incluso il passaggio all'ora legale ecc. Da quello che ho letto. – fge