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