代码之家  ›  专栏  ›  技术社区  ›  James

为什么java.time.Clock有区域信息?

  •  6
  • James  · 技术社区  · 7 年前

    为什么 java.time.Clock 有区域信息吗?从时钟上你只能得到一个 Instant instant()

    唯一的目的是让时钟中的区域可用,例如创建这样的ZoneDateTime吗? ZonedDateTime.ofInstant(clock().instant(), clock().getZone())

    那么,有一种方法不是很有意义吗 zonedDateTime() 在时钟课上?

    2 回复  |  直到 5 年前
        1
  •  7
  •   Basil Bourque    7 年前

    引用 Clock 文件(重点):

    使用时钟是可选的。所有关键日期时间类都有一个now()工厂方法,该方法使用默认时区中的系统时钟。 . 应用程序使用对象来获取当前时间,而不是静态方法。这可以简化测试。

    Clock.fixed( Instant fixedInstant, ZoneId zone ) 始终将当前时刻报告为特定时刻,即固定(不变)的时间点。

        2
  •  3
  •   Anonymous    7 年前

    我想回答你的问题需要一点读心术或猜测,但还是让我试试吧。据我所知 Clock now 方法采用 钟 钟 无法提供时区:

    列表可能不完整。只有 Instant.now(Clock) 不需要时区,并且忽略 钟 .

    是的,替代设计在哪里 钟 有一个 zonedDateTime 方法提供的结果与 也有道理。然而,有人想要发展,比如说,一个 JewishDate 类将永远无法插入 jewishDate 方法进入 钟 班级。利用现有的设计,他们可以设计自己的产品 沿着与现有日期和时间类完全相同的线初始化,包括 JewishDate.now(Clock) 方法。