Sono nuovo nel pacchetto java.time. Ho un LocalDate 2015-12-10. Devo convertire questo in ZonedDateTime. L'orario dovrebbe essere 00:00:00 e Zone ZoneOffset.UTC.Java 8 - Converti LocalDate in ZonedDateTime
Dopo la conversione, ZonedDateTime dovrebbe essere 2015-12-10T00: 00: 00 + 02: 00.
Sto memorizzando il LocalDate in una variabile denominata startDate.
ho provato:
ZonedDateTime.ofInstant(Instant.from(startDate), ZoneOffset.UTC)
ma ottiene l'errore
java.time.DateTimeException: Impossibile ottenere immediata da TemporalAccessor: 2015/12/10 di tipo java.time.LocalDate]
ho anche provato:
startDate.atStartOfDay().atZone(ZoneOffset.UTC)
Questo dà risultati inaspettati.
Ho guardato l'API e ho provato alcuni altri metodi, ma finora non ho avuto fortuna.
Esiste un altro modo per convertire LocalDate in ZonedDateTime?
Perché ti aspetti che lo scostamento di zona sia +02: 00? – Misha
Se si desidera un ZonedDateTime, è necessario un ZoneId. Non solo un ZoneOffset. E la tua domanda non ha molto senso. Per prima cosa dici di volerlo al fuso orario UTC e poi dici che dovrebbe essere il 2015-12-10T00: 00: 00 + 02: 00. Se è 02: 00, non è UTC. UTC è +00: 00. Se quello che vuoi è un orario con un offset UTC fisso, dovresti usare un OffsetDateTime: 'OffsetDateTime offsetDateTimeDateTime = date.atStartOfDay(). AtOffset (ZoneOffset.ofHours (2));' –
Le mie scuse: ZoneOffset estende ZoneId, quindi questo ti restituirà un ZonedDateTime. Il resto del mio commento è ancora valido. –