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).