2014-04-22 6 views
41

Io lavoro con la nuova API DateTime di Java 8.Come convertire un LocalDate in un Instant?

Come convertire un LocalDate in un Instant? ottengo un'eccezione con

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

e non capisco perché.

+0

Perché un 'LocalDate' non include un orario. – OrangeDog

risposta

59

Per convertirlo in un istante è necessario disporre di un'istanza LocalDateTime, es .:

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

Grazie mille. Capisco ora che ho bisogno di specificare un fuso orario per ottenere un Instant. – user1643352

29

La classe Instant rappresenta un punto istantanea sulla linea temporale. La conversione da e verso una data locale richiede un fuso orario. A differenza di altre librerie di data e ora, JSR-310 non selezionerà automaticamente il fuso orario, quindi è necessario fornirlo.

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

Questo esempio utilizza il fuso orario predefinito della JVM - ZoneId.systemDefault() - per eseguire la conversione. Vedi qui per un longer answer a una domanda correlata.