java java-8 java-time

java - Instant vs LocalDateTime-Cuándo preferir uno sobre el otro



java-8 java-time (1)

Depende de lo que quieras hacer con los datos. Los dos tipos son conceptualmente diferentes.

Imagina el evento ocurrido a las 8 am UTC.

Una vez que tiene un LocalDateTime, ha perdido la información de la zona horaria y técnicamente podría estar en cualquier zona horaria, por lo que quizás sean las 8 am UTC o las 8 am EST (= 1pm UTC). Significa que debe "saber" que su convención es que LocalDateTime es en realidad un momento UTC.

Si usa un Instant, sabe exactamente a qué momento del tiempo se refiere, independientemente de las zonas horarias, y no necesita "conocimiento" o convención externa. Sin embargo, tampoco tiene información de zona horaria, por lo que no sabe si son las 8 am hora del Reino Unido de las 9 am CET o las 3 am EST (pero todas ellas representan el mismo momento en el tiempo).

Finalmente, si necesita el momento en el tiempo y con qué zona horaria debe asociarse, puede utilizar un ZonedDateTime o OffsetDateTime que tendrá la información de Instant y la zona horaria.

Necesito guardar y presentar la fecha y hora de los eventos que ocurrieron en mi servidor en UTC. Tengo la opción de usar Instant.now () o LocalDateTime.now (ZoneOffset.UTC)

¿Cuándo debería preferir uno sobre el otro?