2013-06-13 34 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'是相反的。 –