gpt4 book ai didi

java - DateTime.now() 和 new DateTime(System.currentTimeMillis()) 方法在 Java 中是否相等?

转载 作者:行者123 更新时间:2023-11-29 10:08:36 29 4
gpt4 key购买 nike

我需要知道,在 java(我的版本 jdk 8)中,我可以替换 new DateTime(System.currentTimeMillis()) 这个代码形式,'DateTime.now() ' ?

我使用了包 import org.joda.time.DateTime;

如何在 Java 8(日期和时间)中编写相同的内容?

最佳答案

tl;dr

java.time.Instant.now()  // Capture the current moment in UTC. 

在内部,时刻被跟踪为整秒计数加上小数秒计数纳秒,因为 1970-01-01T00:00:00Z 的纪元引用(Z 表示 UTC ).

java.time

您的 DateTime 类显然来自 Joda-Time 库。根据 JSR 310,该库的创建者 Stephen Colebourne 继续将 Joda-Time 替换为 Java 8 及更高版本中内置的 java.time 类。

即时

暂时使用 UTC,使用 Instant。要以 UTC 格式捕获当前时刻,Instant.now()

Instant 表示自 UTC 中 1970 年第一时刻的纪元引用以来的纳秒计数。

System.currentTimeMillis() 的调用是相同的,是自 1970 年 UTC 开始以来的计数,除了更粗略的毫秒分辨率而不是纳秒。实际上,传统的计算机时钟无法以纳秒为单位准确跟踪当前时刻,因此使用 Instant 捕获当前时刻可能仅捕获微秒(Java 9 及更高版本中的典型值)或毫秒(Java 8 中的典型值)。

结果:无需调用 System.currentTimeMillis()。请改用 Instant.now()

ZonedDateTime

DateTime 的等价物是 ZonedDateTime。此类表示通过特定区域(时区)的人们使用的挂钟时间看到的时刻。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

关于java - DateTime.now() 和 new DateTime(System.currentTimeMillis()) 方法在 Java 中是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55466219/

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