我如何总结两个ZoneOffset?

我从字符串解析ZoneOffset的两个对象。我如何总结它们并应用于ZonedDateTime?我如何总结两个ZoneOffset?

例如:
原来ZonedDateTime是2017-12-27T18:30:00,第一偏移是+03,第二偏移+05

我怎样才能得到的2017-12-28T18:30:00+08:002017-12-28T10:30:00输出?

回答:

我这样理解你的问题(请检查是否正确):你有一个ZonedDateTime与通常的UTC偏移量。我会称之为dateTimeWithBaseOffset。你已经有了另一ZonedDateTime与偏移相对于前ZonedDateTime的偏移。这真的是不正确的;该班级的设计者决定偏移量来自UTC,但有人用它与预期的不同。我会打电话给后者dateTimeWithOffsetFromBase

当然最好,如果你能解决这个问题产生dateTimeWithOffsetFromBase与非正统偏移的代码。我假设现在这不会是你可以使用的解决方案。因此,您需要将不正确的偏移量更正为UTC的偏移量。

它不坏:

ZoneOffset baseOffset = dateTimeWithBaseOffset.getOffset(); 

ZoneOffset additionalOffset = dateTimeWithOffsetFromBase.getOffset();

ZoneOffset correctedOffset = ZoneOffset.ofTotalSeconds(baseOffset.getTotalSeconds()

+ additionalOffset.getTotalSeconds());

OffsetDateTime correctedDateTime = dateTimeWithOffsetFromBase.toOffsetDateTime()

.withOffsetSameLocal(correctedOffset);

System.out.println(correctedDateTime);

使用您的样本日期时间这个打印

2017-12-28T18:30+08:00 

如果你想在UTC时间:

correctedDateTime = correctedDateTime.withOffsetSameInstant(ZoneOffset.UTC); 

System.out.println(correctedDateTime);

这将打印的日期时间你问:

2017-12-28T10:30Z 

对于具有偏移量的日期时间,我们不需要使用ZonedDateTime,OffsetDateTime可以做的事情,并且可以更好地向读者沟通我们所达成的目标(尽管如此,ZonedDateTime也可以)。

以上是 我如何总结两个ZoneOffset? 的全部内容, 来源链接: utcz.com/qa/266444.html

回到顶部