Respostas:
Você pode fazer:
timeStamp.toLocalDateTime().toLocalDate();
Observe que
timestamp.toLocalDateTime()
usará oClock.systemDefaultZone()
fuso horário para fazer a conversão. Isso pode ou não ser o que você deseja.
timestamp.toLocalDateTime()
método usará o fuso horário systemDefault para fazer a conversão. Isso pode ou não ser o que você deseja.
LocalDateTime
sempre usa o fuso horário padrão do sistema. Isso é o que "Local" significa em seu nome.
A resposta aceita não é ideal, então decidi adicionar meus 2 centavos
timeStamp.toLocalDateTime().toLocalDate();
é uma solução ruim em geral , nem sei ao certo por que eles adicionaram esse método ao JDK, pois isso torna as coisas realmente confusas ao fazer uma conversão implícita usando o fuso horário do sistema. Geralmente, ao usar apenas classes java8 date, o programador é forçado a especificar um fuso horário, o que é uma coisa boa.
A boa solução é
timestamp.toInstant().atZone(zoneId).toLocalDate()
Onde zoneId é o fuso horário que você deseja usar, que normalmente é ZoneId.systemDefault () se você deseja usar o fuso horário do sistema ou algum fuso horário codificado como ZoneOffset.UTC
A abordagem geral deve ser
Expandirei levemente a resposta do @assylias para levar em conta o fuso horário. Há pelo menos duas maneiras de obter LocalDateTime para um fuso horário específico.
Você pode usar o fuso horário setDefault para todo o aplicativo. Ele deve ser chamado antes de qualquer registro de data e hora -> java.time:
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
Ou você pode usar a cadeia toInstant.atZone:
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();