我需要获得最准确的时间(与系统时钟同步),以毫秒为单位。我知道System.currentTimeMillis()
是准确的。我也知道JodaTime
毫秒是准确的。
哪个更准确?
谢谢!
System.currentTimeMillis
默认情况下,Joda Time 只是搭载。Joda Time 中的所有内容都使用DateTimeUtils.currentTimeMillis
,默认为 usingSystem.currentTimeMillis()
但可以替换为 using setCurrentMillisProvider()
。
如果您希望它与系统时钟同步,System.currentTimeMillis
应该没问题。当然,您可以使用 NTP 提供程序获得更准确的时间。
(就我个人而言,我不喜欢 Joda 公开的静态依赖——它总比不能为测试做任何事情要好,但它仍然是全局状态。我更喜欢将Clock
对象作为依赖传递给任何需要当前时间的东西。)
System.nanoTime()比System.currentTimeMillis()更准确。
这是 Joda Time 的DateTimeUtils#currentTimeMillis()的文档所说的:
默认情况下,此返回值
System.currentTimeMillis().
可以使用此类中的其他方法进行更改。
您可以使用DateTimeUtils#setCurrentMillisProvider来更改currentTimeMillis()
.