首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么ZonedDateTime类不实现TemporalAdjuster接口

为什么ZonedDateTime类不实现TemporalAdjuster接口
EN

Stack Overflow用户
提问于 2017-03-16 09:26:01
回答 1查看 198关注 0票数 7

我目前正在研究java.time应用程序接口,我注意到java.time中的大多数类(例如LocalDateOffsetDateTime)都实现了TemporalAdjuster接口,但ZonedDateTime没有。我只是想知道为什么会这样?为什么要将ZonedDateTime排除在实现TemporalAdjuster接口之外?

EN

Stack Overflow用户

回答已采纳

发布于 2017-03-16 16:46:56

TemporalAdjuster通过TemporalAdjuster.adjustInto(Temporal)方法更改另一个时态对象。Temporal接口允许通过Temporal.with(TemporalField, long)更改各个字段。

LocalDate可以实现TemporalAdjuster,因为它的状态完全由时间字段(年、月、日)组成。因此,LocalDate.adjustInto(Temporal)中的实现可以调用传递年、月和日的Temporal.with(TemporalField, long) (它实际上使用ChronoField.EPOCH_DAY,它是年、月和日的组合)。

OffsetDateTime可以实现TemporalAdjuster,因为它的状态也完全由时间字段(年、月、日、时、分、秒、纳秒和偏移量秒)组成。因此,OffsetDateTime.adjustInto(Temporal)中的实现同样可以调用Temporal.with(TemporalField, long),逐个传递字段。

ZonedDateTime无法实现TemporalAdjuster,因为其状态包含不是临时字段的ZoneId,因此无法传递给Temporal.with(TemporalField, long)。即。不能通过Temporal接口更改时态类的时区。

由于ZonedDateTime包含所有可能的日期-时间字段,因此此限制在实践中影响不大。

票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42823711

复制
相关文章

相似问题

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