最も正確な時刻 (システム クロックと同期している時刻) をミリ秒単位で取得する必要があります。私System.currentTimeMillis()
は正確であることを知っています。JodaTime
のミリ秒が正確であることも知っています。
どちらがより正確ですか?
ありがとう!
Joda TimeSystem.currentTimeMillis
はデフォルトでピギー バックします。Joda Time のすべては を使用します。DateTimeUtils.currentTimeMillis
これはデフォルトで using に設定されていますが、これは を使用System.currentTimeMillis()
して置き換えることができますsetCurrentMillisProvider()
。
システムクロックと同期させたい場合は、System.currentTimeMillis
問題ありません。もちろん、NTP プロバイダーを使用すると、より正確な時刻を取得できる場合があります。
(個人的には、Joda が公開する静的な依存関係が嫌いです。テストのために何もできないよりはましですが、それでもグローバルな状態です。Clock
現在の時刻を必要とするものへの依存関係としてオブジェクトを渡すことを好みます。)
System.nanoTime()はSystem.currentTimeMillis()よりも正確です。
これは、Joda Time のDateTimeUtils#currentTimeMillis()のドキュメントに次のように記載されています。
デフォルトでは、これは返されます
System.currentTimeMillis().
。これは、このクラスの他のメソッドを使用して変更される場合があります。
DateTimeUtils#setCurrentMillisProviderを使用して、 の動作を変更currentTimeMillis()
できます。