我有一个
OFfsetDateTime `OffsetDateTime date = OffsetDateTime.parse("2020-03-02T14:25:54.871Z");"Z“代表什么?我怎么才能再加一个小时呢?
我试着做
OffsetDateTime date = OffsetDateTime.parse("2020-03-02T14:25:54.871Z+1");,但这并不能解析。
谢谢:)
发布于 2020-03-02 18:31:42
你不会想要那样的。
OffsetDateTime转换为不同的偏移量,调整一天中的时间,以考虑到新偏移量的时间是不同的。Z表示与UTC之间的偏移值为零。它有时被称为“祖鲁时区”,尽管它是一个偏移,而不是时区。
将时间转换为不同的时区
例如:
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也会为您处理)。
指定偏移量
如果您想自己指定偏移量:
ZoneOffset newOffset = ZoneOffset.ofHours(1);
OffsetDateTime dateAtNewOffset = date.withOffsetSameInstant(newOffset);结果和以前一样。
将1小时添加到偏移量中而不更改一天中的小时
回答你问的问题。我重复我的警告,,这不是你想要的,。
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
https://stackoverflow.com/questions/60492409
复制相似问题