gpt4 book ai didi

java - Clock.fixed zone的作用是什么

转载 作者:行者123 更新时间:2023-12-02 13:30:42 24 4
gpt4 key购买 nike

根据 Clock.fixed 的 javadoc ,区域是:

zone - the time-zone to use to convert the instant to date-time, not null

但是我的代码似乎没有受到使用不同区域的影响。

Clock mockClock = Clock.fixed(Instant.parse("2017-04-10T17:59:00Z"), 
ZoneId.of("UTC"));
System.out.println("ZonedDateTime using clock "+ZonedDateTime.now(mockClock));

在上面的代码中,无论我将时区设置为 UTC 还是 America/Chicago,输出都是相同的:

ZonedDateTime using clock 2017-04-10T17:59Z[UTC]

如果不改变时区,zone的作用是什么?

最佳答案

通常,使用静态方法之一检索 Clock 实例

Clock.system(ZoneId z)
Clock.systemDefaultZone()
Clock.systemUTC()

是一个返回当前时间的“运行”时钟。 Clock 始终跟踪 UTC,但也知道其时区,并在返回日期/时间值时使用该时区。

如果您仔细阅读 Javadoc,您会发现 Clock.fixed() 返回一种未运行的特殊类型的时钟,也就是说,它始终设置为特定时刻并且不会不随时间改变。

ZonedDateTime.now(Clock Clock) 查询给定时钟并返回根据 Clock 时区调整的当前时间。

所以当你这样做时

Clock mockClock = Clock.fixed(Instant.parse("2017-04-10T17:59:00Z"), ZoneId.of("UTC"));
ZonedDateTime zdt = ZonedDateTime.now(mockClock);

发生以下情况:

  1. 系统会创建一个特殊的“未运行”时钟,该时钟设置为您指定的日期/时间,时区规范为 UTC。
  2. ZonedDateTime.now(mockClock) 调用读取时钟的当前值(在您的情况下是固定的),并使用时钟值和一个 ZonedDateTime 创建一个 ZonedDateTime UTC 时区。

关于java - Clock.fixed zone的作用是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43196353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com