我如何总结两个ZoneOffset?
我从字符串解析ZoneOffset的两个对象。我如何总结它们并应用于ZonedDateTime?我如何总结两个ZoneOffset?
例如:
原来ZonedDateTime是2017-12-27T18:30:00
,第一偏移是+03
,第二偏移+05
我怎样才能得到的2017-12-28T18:30:00+08:00
或2017-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