Antworten:
Du kannst tun:
timeStamp.toLocalDateTime().toLocalDate();
Beachten Sie, dass
timestamp.toLocalDateTime()
dieClock.systemDefaultZone()
Zeitzone für die Konvertierung verwendet wird. Dies kann oder kann nicht sein, was Sie wollen.
timestamp.toLocalDateTime()
Methode verwendet die Zeitzone systemDefault, um die Konvertierung durchzuführen. Dies kann oder kann nicht sein, was Sie wollen.
LocalDateTime
immer die Standard-Zeitzone des Systems. Das ist es, was "Lokal" in seinem Namen bedeutet.
Die akzeptierte Antwort ist nicht ideal, deshalb habe ich beschlossen, meine 2 Cent hinzuzufügen
timeStamp.toLocalDateTime().toLocalDate();
ist im Allgemeinen eine schlechte Lösung . Ich bin mir nicht einmal sicher, warum sie diese Methode zum JDK hinzugefügt haben, da sie die Dinge durch eine implizite Konvertierung unter Verwendung der Systemzeitzone wirklich verwirrend macht. Wenn der Programmierer nur Java8-Datumsklassen verwendet, muss er normalerweise eine Zeitzone angeben, was eine gute Sache ist.
Die gute Lösung ist
timestamp.toInstant().atZone(zoneId).toLocalDate()
Dabei ist zoneId die Zeitzone, die Sie verwenden möchten. Dies ist normalerweise entweder ZoneId.systemDefault (), wenn Sie Ihre Systemzeitzone verwenden möchten, oder eine fest codierte Zeitzone wie ZoneOffset.UTC
Der allgemeine Ansatz sollte sein
Ich werde die Antwort von @assylias leicht erweitern, um die Zeitzone zu berücksichtigen. Es gibt mindestens zwei Möglichkeiten, LocalDateTime für eine bestimmte Zeitzone abzurufen.
Sie können die setDefault-Zeitzone für die gesamte Anwendung verwenden. Es sollte vor jedem Zeitstempel aufgerufen werden -> java.time-Konvertierung:
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
Oder Sie können die Kette toInstant.atZone verwenden:
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();