Respuestas:
Tu puedes hacer:
timeStamp.toLocalDateTime().toLocalDate();
Tenga en cuenta que
timestamp.toLocalDateTime()
usará laClock.systemDefaultZone()
zona horaria para realizar la conversión. Esto puede o no ser lo que quieres.
timestamp.toLocalDateTime()
método usará la zona horaria predeterminada del sistema para realizar la conversión. Esto puede o no ser lo que quieres.
LocalDateTime
siempre usa la zona horaria predeterminada del sistema. Eso es lo que significa "local" en su nombre.
La respuesta aceptada no es ideal, así que decidí agregar mis 2 centavos
timeStamp.toLocalDateTime().toLocalDate();
es una mala solución en general , ni siquiera estoy seguro de por qué agregaron este método al JDK ya que hace que las cosas sean realmente confusas al hacer una conversión implícita utilizando la zona horaria del sistema. Por lo general, cuando se usan solo clases de fecha java8, el programador se ve obligado a especificar una zona horaria que es algo bueno.
La buena solución es
timestamp.toInstant().atZone(zoneId).toLocalDate()
Donde zoneId es la zona horaria que desea usar, que generalmente es ZoneId.systemDefault () si desea usar la zona horaria de su sistema o alguna zona horaria codificada como ZoneOffset.UTC
El enfoque general debe ser
Expandiré ligeramente la respuesta de @assylias para tener en cuenta la zona horaria. Hay al menos dos formas de obtener LocalDateTime para una zona horaria específica.
Puede usar la zona horaria setDefault para toda la aplicación. Debe llamarse antes de cualquier marca de tiempo -> conversión java.time:
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
O puede usar la cadena toInstant.atZone:
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();