无法从TemporalAccessor获取OffsetDateTime

无法从TemporalAccessor获取OffsetDateTime,第1张

无法从TemporalAccessor获取OffsetDateTime

问题在于,a

ZoneIdis
和a
ZoneOffsetis
之间存在差异。要创建一个
OffsetDateTime
,您需要一个区域偏移量。但是,a
ZoneId
和a之间没有一对一的映射关系,
ZoneOffset
因为它实际上取决于当前的夏时制时间。对于ZoneId像“欧洲/柏林”一样的商品,夏季有一个偏移量,而冬季有一个不同的偏移量。

在这种情况下,使用

aZonedDateTime
代替会更容易
OffsetDateTime
。在解析期间,
ZonedDateTime
将正确设置为
"Europe/Berlin"
区域ID,并且还会根据要解析的日期有效的夏时制设置偏移量:

public static void main(String[] args) {    String datum = "20130419233512";    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").withZone(ZoneId.of("Europe/Berlin"));    ZonedDateTime datetime = ZonedDateTime.parse(datum, formatter);    System.out.println(datetime.getZone()); // prints "Europe/Berlin"    System.out.println(datetime.getOffset()); // prints "+02:00" (for this time of year)}

请注意,如果您确实要使用OffsetDateTime,可以使用

ZonedDateTime.toOffsetDateTime()
将转换
ZonedDateTime
OffsetDateTime



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5439234.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-11
下一篇2022-12-11

发表评论

登录后才能评论

评论列表(0条)

    保存