1

最も正確な時刻 (システム クロックと同期している時刻) をミリ秒単位で取得する必要があります。私System.currentTimeMillis()は正確であることを知っています。JodaTimeのミリ秒が正確であることも知っています。

どちらがより正確ですか?

ありがとう!

4

2 に答える 2

8

Joda TimeSystem.currentTimeMillisはデフォルトでピギー バックします。Joda Time のすべては を使用します。DateTimeUtils.currentTimeMillisこれはデフォルトで using に設定されていますが、これは を使用System.currentTimeMillis()して置き換えることができます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 に答える