1

我需要获得最准确的时间(与系统时钟同步),以毫秒为单位。我知道System.currentTimeMillis()是准确的。我也知道JodaTime毫秒是准确的。

哪个更准确?

谢谢!

4

2 回答 2

8

System.currentTimeMillis默认情况下,Joda Time 只是搭载。Joda Time 中的所有内容都使用DateTimeUtils.currentTimeMillis,默认为 usingSystem.currentTimeMillis()但可以替换为 using setCurrentMillisProvider()

如果您希望它与系统时钟同步,System.currentTimeMillis应该没问题。当然,您可以使用 NTP 提供程序获得更准确的时间。

(就我个人而言,我不喜欢 Joda 公开的静态依赖——它总比不能为测试做任何事情要好,但它仍然是全局状态。我更喜欢将Clock对象作为依赖传递给任何需要当前时间的东西。)

于 2013-06-13T06:43:32.863 回答
3

System.nanoTime()System.currentTimeMillis()更准确。

这是 Joda Time 的DateTimeUtils#currentTimeMillis()的文档所说的:

默认情况下,此返回值System.currentTimeMillis().可以使用此类中的其他方法进行更改。

您可以使用DateTimeUtils#setCurrentMillisProvider更改currentTimeMillis().

于 2013-06-13T06:37:43.060 回答