2013-06-13 35 views
1

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

哪一个更准确?

谢谢!

+1

这是'System.currentTimeMillis()'。因为无论如何,乔达时间可能会用到这个,所以我相信没有任何区别。 – fge

回答

7

乔达时间只是默认情况下在System.currentTimeMillis背上。 Joda Time中的所有内容都使用DateTimeUtils.currentTimeMillis,默认使用System.currentTimeMillis(),但可以使用setCurrentMillisProvider()替换。

如果你想要它与系统时钟同步,System.currentTimeMillis应该没问题。当然,您可以使用NTP提供商获得更准确的时间。我个人不喜欢Joda公开的静态依赖 - 它比测试无法做任何事情要好,但它仍然是全局状态,我更喜欢将一个Clock对象作为依赖项传递给需要当前时间的任何东西)

3

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

这是做什么用约达时间的DateTimeUtils#currentTimeMillis()的文件说:

,缺省时返回System.currentTimeMillis().这可以改变使用这个类的其他方法。

您可以使用DateTimeUtils#setCurrentMillisProvider改变currentTimeMillis()行为。

+5

它*不同*。这两者从来都不是真正的替代品。 'nanoTime'用于精确测量两次之间的差异,但不应该用于“当前时间”。 'System.currentTimeMillis'是相反的。 –