There are many ways to convert LocalDate
to OffsetDateTime
. Some of them are listed below:
1. Using LocalDate#atStartOfDay(ZoneId zone)
=> ZonedDateTime#toOffsetDateTime()
:
LocalDate date = LocalDate.now();
ZoneOffset offset = ZoneOffset.UTC;
OffsetDateTime odt = date.atStartOfDay(offset).toOffsetDateTime();
This can also be used when you have ZoneId
available e.g.
LocalDate date = LocalDate.now();
// You can use a custom ZoneId e.g. ZoneId.of("Europe/London")
ZoneId zoneId = ZoneId.systemDefault();
OffsetDateTime odt = date.atStartOfDay(zoneId).toOffsetDateTime();
2. Using LocalDate#atStartOfDay()
=> LocalDateTime#atOffset(ZoneOffset offset)
:
LocalDate date = LocalDate.now();
ZoneOffset offset = ZoneOffset.UTC;
OffsetDateTime odt = date.atStartOfDay().atOffset(offset);
3. Using LocalDate#atTime(OffsetTime time)
:
LocalDate date = LocalDate.now();
ZoneOffset offset = ZoneOffset.UTC;
OffsetDateTime odt = date.atTime(OffsetTime.of(LocalTime.MIDNIGHT, offset));
4. Using OffsetDateTime#of(LocalDate date, LocalTime time, ZoneOffset offset)
:
LocalDate date = LocalDate.now();
ZoneOffset offset = ZoneOffset.UTC;
OffsetDateTime odt = OffsetDateTime.of(date, LocalTime.MIDNIGHT, offset);
Notes:
- In all the solutions given above, replace the sample
ZoneOffset
as required e.g. ZoneOffset offset = ZoneOffset.of("+02:00")
.
- In all the solutions given above, replace the sample
LocalDate
as required e.g. LocalDate date = LocalDate.of(2021, 3, 14)
.