web-dev-qa-db-fra.com

Java 8 - Convertir LocalDate en ZonedDateTime

Je suis nouveau dans le package Java.time. J'ai un LocalDate 2015-12-10. J'ai besoin de convertir ceci en ZonedDateTime. L'heure doit être 00:00:00 et Zone est ZoneOffset.UTC. 

Après la conversion, ZonedDateTime doit être 2015-12-10T00: 00: 00 + 02: 00.

Je stocke le LocalDate dans une variable appelée startDate.

J'ai essayé:

ZonedDateTime.ofInstant(Instant.from(startDate), ZoneOffset.UTC)

mais obtenez l'erreur

Java.time.DateTimeException: impossible d'obtenir Instant de TemporalAccessor: 2015-12-10 de type Java.time.LocalDate]

J'ai aussi essayé:

startDate.atStartOfDay().atZone(ZoneOffset.UTC)

Cela donne des résultats inattendus. 

J'ai regardé l'API et essayé quelques autres méthodes, mais pas de chance jusqu'à présent.

Existe-t-il un autre moyen de convertir LocalDate en ZonedDateTime?

17
SelfTaught

Lors de la conversion d'objets moins spécifiques en objets plus spécifiques, utilisez les méthodes 'at':

ZonedDateTime zdt = startDate.atStartOfDay(ZoneOffset.UTC);

Passer l'offset UTC n'entraînera pas un résultat de 02:00, ce qui suggère que vous essayez de réaliser autre chose.

32
JodaStephen

Je suppose que la question n'est plus pertinente, mais pour les besoins de Google:

  LocalDate localDate = LocalDate.parse("2017-07-22");      
  ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
  // => 2017-07-22T00:00+05:30[Asia/Kolkata]

source https://beginnersbook.com/2017/10/Java-convert-localdate-to-zoneddatetime/

0
Luc S.