首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZoneId在java.time.Clock中的目的是什么?

ZoneId在java.time.Clock中的目的是什么?
EN

Stack Overflow用户
提问于 2022-01-21 18:42:53
回答 1查看 168关注 0票数 4

我们可以从时钟中创建即时。时钟有时区。

代码语言:javascript
复制
Clock clock1 = Clock.system(ZoneId.of("Europe/Paris"));
Clock clock2 = Clock.system(ZoneId.of("Asia/Calcutta"));
System.out.println("Clock1 instant: " + clock1.instant());
System.out.println("Clock2 instant: " + clock2.instant());

输出提供了相同的瞬间:

Clock1即时通讯: 2022-01-21T18:36:21.848Z Clock2即时通讯: 2022-01-21T18:36:21.848Z

那么,在时钟中设置时区的目的是什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-22 15:27:51

Instant

你说过:

输出提供了相同的瞬间:

Instant是从UTC中看到的瞬间,也就是与UTC的零小时-分-秒的偏移。因此,您的代码不使用指定的时区。

ZonedDateTime

相反,请尝试ZonedDateTime。这个类确实使用了时区。例如,调用ZonedDateTime.now()可以捕获JVM当前默认时区中所显示的当前时刻。调用ZonedDateTime.now( myClock )捕获由该Clock对象跟踪的当前时刻,通过该Clock对象的指定时区可以看到这一点。

代码语言:javascript
复制
System.out.println("Clock1 ZonedDateTime.now: " + ZonedDateTime.now( clock1 ) );
System.out.println("Clock2 ZonedDateTime.now: " + ZonedDateTime.now( clock2 ) );

看这个在IdeOne.com现场运行的代码。顺便说一下,我们使用的是新的时区名称Asia/Kolkata,而不是Asia/Calcutta

注意一天中不同的时间,16:21和20:51。注意不同的时区。

代码语言:javascript
复制
Clock1 ZonedDateTime.now: 2022-01-22T16:21:26.490913+01:00[Europe/Paris]
Clock2 ZonedDateTime.now: 2022-01-22T20:51:26.492823+05:30[Asia/Kolkata]

用于测试

你问:

那么,在时钟中设置时区的目的是什么呢?

这个功能对于测试很有用,我们需要创建一个特定时区的已知场景,而不是使用JVM的实际默认时区。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70806175

复制
相关文章

相似问题

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