2011-02-01 4 views
36

システム日付を取得する必要があり、Javaは「新しいDate()。getTime()」を提供します。新しい日付を作成せずにJavaでシステム時間を取得する方法

しかし、私は新しいオブジェクトの割り当てを避ける必要があります(私は組み込みシステムで作業しています)。新しいDateオブジェクトを割り当てずにシステム時間を取得するにはどうすればよいですか?

答えて

54

jzdによれば、System.currentTimeMillisを使用できます。あなたはでそれをDateオブジェクトをを必要とするが、新しいDateオブジェクトを作成したくない場合は、既存のDateオブジェクトを再利用するためにDate.setTimeを使用することができます。個人的には、Dateは変更可能ですが、の場合はとなることは嫌です。同様に、CalendarsetTimeInMillisの方法を有する。

可能であれば、おそらくそれをlongのままにしておく方がよいでしょう。タイムスタンプだけが必要な場合は、効果的に、それが最善の方法でしょう。

44

これは動作するはずです:

System.currentTimeMillis(); 
10

あなたはSystem.currentTimeMillis()を使用することができます。

少なくともOpenJDKでは、Dateはこれをカバーの下で使用します。

Systemの呼び出しは、ネイティブのJVMメソッドです。したがって、ここではそうは考えられませんが、カバーの下で割り当てが行われているとは言えません。

6

使用のSystem.currentTimeMillis()又はSystem.nanoTimeの()

+1

nanoTime()のドキュメントから:このメソッドは、経過時間を測定するためにのみ使用でき、システムまたはウォールクロック時間の他の概念には関係しません。返される値は固定されているが任意の時刻からナノ秒を表します(将来的には値が負の値になる可能性があります)。このメソッドは、ナノ秒の精度を提供しますが、必ずしもナノ秒の精度ではありません。値の変更頻度に関する保証はありません。約292年(263ナノ秒)を超える連続コールの違いは、数値のオーバーフローによる経過時間を正確に計算しません。 – AaronF

関連する問題