首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串中的OffsetDateTime Z

字符串中的OffsetDateTime Z
EN

Stack Overflow用户
提问于 2020-03-02 15:52:52
回答 1查看 1.6K关注 0票数 1

我有一个

代码语言:javascript
复制
OFfsetDateTime `OffsetDateTime date = OffsetDateTime.parse("2020-03-02T14:25:54.871Z");

"Z“代表什么?我怎么才能再加一个小时呢?

我试着做

代码语言:javascript
复制
OffsetDateTime date = OffsetDateTime.parse("2020-03-02T14:25:54.871Z+1");

,但这并不能解析。

谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-02 18:31:42

你不会想要那样的。

  1. ,您想要的是相同的瞬间,相同的时间点。因此,将OffsetDateTime转换为不同的偏移量,调整一天中的时间,以考虑到新偏移量的时间是不同的。
  2. ,在大多数情况下,您不希望指定要直接转换到的偏移量。相反,请指定要转换到哪个时区。让Java为您找到当天该时区的正确偏移量。

Z表示与UTC之间的偏移值为零。它有时被称为“祖鲁时区”,尽管它是一个偏移,而不是时区。

将时间转换为不同的时区

例如:

代码语言:javascript
复制
    OffsetDateTime date = OffsetDateTime.parse("2020-03-02T14:25:54.871Z");
    ZoneId newZone = ZoneId.of("Europe/Prague");
    OffsetDateTime dateAtNewOffset
            = date.atZoneSameInstant(newZone).toOffsetDateTime();
    System.out.println(dateAtNewOffset);

这段代码的输出如下:

2020-03-02T15:25:54.871+01:00

请注意,现在的时间是15,而不是14,以补偿不同的抵消。当时间是14:25时,布拉格是15:25 (夏季时间(DST)生效时除外;如果您在夏季时间部分时间有约会,Java也会为您处理)。

指定偏移量

如果您想自己指定偏移量:

代码语言:javascript
复制
    ZoneOffset newOffset = ZoneOffset.ofHours(1);
    OffsetDateTime dateAtNewOffset = date.withOffsetSameInstant(newOffset);

结果和以前一样。

将1小时添加到偏移量中而不更改一天中的小时

回答你问的问题。我重复我的警告,,这不是你想要的,

代码语言:javascript
复制
    ZoneOffset oldOffset = date.getOffset();
    ZoneOffset newOffset = ZoneOffset.ofTotalSeconds(Math.toIntExact(
            oldOffset.getTotalSeconds() + Duration.ofHours(1).getSeconds()));
    OffsetDateTime dateAtNewOffset = date.withOffsetSameLocal(newOffset);

现在,输出类似于您所要求的内容:

2020-03-02T14:25:54.871+01:00

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60492409

复制
相关文章

相似问题

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