首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将LocalDateTime转换为OffsetDateTime?

如何将LocalDateTime转换为OffsetDateTime?
EN

Stack Overflow用户
提问于 2019-04-01 20:04:59
回答 5查看 17.7K关注 0票数 20

如何将LocalDateTime转换为OffsetDateTime?

代码语言:javascript
复制
private OffsetDateTime getEntryDate(Payment payment){
    return Optional.ofNullable(payment).map(Payment::getEntryDate).map(SHOULD RETURN OffsetDateTime)
            .orElse(null);
}

Payment::getEntryDate将返回LocalDateTime

EN

回答 5

Stack Overflow用户

发布于 2019-08-08 17:02:12

您需要获取要在创建OffsetDateTime时使用的ZoneOffset。一种方法是为您的位置使用ZoneId:

代码语言:javascript
复制
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
票数 11
EN

Stack Overflow用户

发布于 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)

代码语言:javascript
复制
LocalDateTime ldt = LocalDateTime.now();
ZoneOffset offset = ZoneOffset.UTC;
OffsetDateTime odt = ldt.atOffset(offset);

2. Using =>

代码语言:javascript
复制
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)

代码语言:javascript
复制
LocalDateTime ldt = LocalDateTime.now();
ZoneOffset offset = ZoneOffset.UTC;
OffsetDateTime odt = OffsetDateTime.of(ldt, offset);

4. => ZonedDateTime#toOffsetDateTime()**:**

代码语言:javascript
复制
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();

备注:

  1. 在上面给出的所有解决方案中,根据需要替换示例ZoneOffset,例如ZoneOffset offset = ZoneOffset.of("+02:00").
  2. In上面给出的所有解决方案,根据需要替换示例LocalDateTime,例如LocalDateTime ldt = LocalDateTime.of(2021, 3, 14, 10, 20).
票数 8
EN

Stack Overflow用户

发布于 2020-10-13 17:10:52

这样如何:

代码语言:javascript
复制
 OffsetDateTime convertToOffsetDateTime(LocalDateTime ldt) {
        ZoneOffset offset = OffsetDateTime.now().getOffset();
        OffsetDateTime offsetDateTime = ldt.atOffset(offset);
        return offsetDateTime;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55454717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档