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?