如何将LocalDateTime转换为OffsetDateTime?
private OffsetDateTime getEntryDate(Payment payment){
return Optional.ofNullable(payment).map(Payment::getEntryDate).map(SHOULD RETURN OffsetDateTime)
.orElse(null);
}Payment::getEntryDate将返回LocalDateTime
发布于 2019-08-08 17:02:12
您需要获取要在创建OffsetDateTime时使用的ZoneOffset。一种方法是为您的位置使用ZoneId:
final ZoneId zone = ZoneId.of("Europe/Paris");
LocalDateTime localDateTime = LocalDateTime.now();
ZoneOffset zoneOffSet = zone.getRules().getOffset(localDateTime);
OffsetDateTime offsetDateTime = localDateTime.atOffset(zoneOffSet);
System.out.println(offsetDateTime); // 2019-08-08T09:54:10.761+02:00发布于 2021-03-14 15:33:55
有许多方法可以将LocalDateTime转换为OffsetDateTime。下面列出了其中的一些:
1.使用 LocalDateTime#atOffset(ZoneOffset offset)(https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/LocalDateTime.html#atOffset(java.time.ZoneOffset%29)
LocalDateTime ldt = LocalDateTime.now();
ZoneOffset offset = ZoneOffset.UTC;
OffsetDateTime odt = ldt.atOffset(offset);2. Using =>
LocalDateTime ldt = LocalDateTime.now();
// Change the ZoneId as required e.g. ZoneId.of("Europe/London")
ZoneId zoneId = ZoneId.systemDefault();
OffsetDateTime odt = ldt.atZone(zoneId).toOffsetDateTime();3.使用 OffsetDateTime#of(LocalDateTime dateTime, ZoneOffset offset)(https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/OffsetDateTime.html#of(java.time.LocalDateTime,java.time.ZoneOffset%29)
LocalDateTime ldt = LocalDateTime.now();
ZoneOffset offset = ZoneOffset.UTC;
OffsetDateTime odt = OffsetDateTime.of(ldt, offset);4. => ZonedDateTime#toOffsetDateTime()**:**
LocalDateTime ldt = LocalDateTime.now();
// Change the ZoneId as required e.g. ZoneId.of("Europe/London")
ZoneId zoneId = ZoneId.systemDefault();
OffsetDateTime odt = ZonedDateTime.of(ldt, zoneId).toOffsetDateTime();备注:
ZoneOffset,例如ZoneOffset offset = ZoneOffset.of("+02:00").LocalDateTime,例如LocalDateTime ldt = LocalDateTime.of(2021, 3, 14, 10, 20).发布于 2020-10-13 17:10:52
这样如何:
OffsetDateTime convertToOffsetDateTime(LocalDateTime ldt) {
ZoneOffset offset = OffsetDateTime.now().getOffset();
OffsetDateTime offsetDateTime = ldt.atOffset(offset);
return offsetDateTime;
}https://stackoverflow.com/questions/55454717
复制相似问题