2014-04-22 15 views
41

Ich arbeite mit der neuen DateTime API von Java 8.Wie konvertiert man ein LocalDate zu einem Instant?

Wie konvertiert man ein LocalDate zu einem Instant? Ich erhalte eine Ausnahme mit

LocalDate date = LocalDate.of(2012, 2, 2); 
Instant instant = Instant.from(date); 

und ich verstehe nicht, warum.

+0

Weil ein 'LocalDate' keine Zeit enthält. – OrangeDog

Antwort

59

Um es zu einem Augenblick Sie eine Instanz Local, z.B .:

LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC) 
+0

Vielen Dank. Ich verstehe jetzt, dass ich eine Zeitzone angeben muss, um einen Instant zu erhalten. – user1643352

29

Die Instant Klasse stellt einen momentanen Punkt auf der Zeitlinie haben müssen, zu konvertieren. Die Konvertierung zu und von einem lokalen Datum erfordert eine Zeitzone. Im Gegensatz zu anderen Datums- und Zeitbibliotheken wird JSR-310 die Zeitzone für Sie nicht automatisch auswählen, daher müssen Sie sie angeben.

LocalDate date = LocalDate.now(); 
Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant(); 

dieses Beispiel wird die Standardzeitzone der JVM - ZoneId.systemDefault() - die Umwandlung durchzuführen. Siehe hier für eine longer answer zu einer verwandten Frage.

Verwandte Themen