webentwicklung-frage-antwort-db.com.de

Java 8 - Konvertieren Sie LocalDate in ZonedDateTime

Ich bin neu im Java.time-Paket. Ich habe ein LocalDate 2015-12-10. Ich muss das in ZonedDateTime konvertieren. Die Zeit sollte 00:00:00 sein und Zone ist ZoneOffset.UTC. 

Nach der Konvertierung sollte ZonedDateTime 2015-12-10T00: 00: 00 + 02: 00 sein.

Ich speichere das LocalDate in einer Variablen namens startDate.

Ich habe es versucht:

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

aber bekomme den Fehler

Java.time.DateTimeException: Instant kann von TemporalAccessor: 2015-12-10 vom Typ Java.time.LocalDate nicht abgerufen werden.]

Ich habe auch versucht:

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

Dies führt zu unerwarteten Ergebnissen. 

Ich habe mir die API angesehen und ein paar andere Methoden ausprobiert, aber bisher kein Glück.

Gibt es eine andere Möglichkeit, LocalDate in ZonedDateTime zu konvertieren?

17
SelfTaught

Wenn Sie weniger spezifische Objekte in spezifischere Objekte konvertieren, verwenden Sie die at-Methoden:

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

Beim Übergeben des UTC-Offsets wird jedoch kein Ergebnis von +02: 00 angezeigt, was darauf hinweist, dass Sie versuchen, etwas anderes zu erreichen.

32
JodaStephen

Ich denke, das Problem ist nicht mehr relevant, aber für Google-Zwecke:

  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.