システム日付を取得する必要があり、Javaは「新しいDate()。getTime()」を提供します。新しい日付を作成せずにJavaでシステム時間を取得する方法
しかし、私は新しいオブジェクトの割り当てを避ける必要があります(私は組み込みシステムで作業しています)。新しいDateオブジェクトを割り当てずにシステム時間を取得するにはどうすればよいですか?
システム日付を取得する必要があり、Javaは「新しいDate()。getTime()」を提供します。新しい日付を作成せずにJavaでシステム時間を取得する方法
しかし、私は新しいオブジェクトの割り当てを避ける必要があります(私は組み込みシステムで作業しています)。新しいDateオブジェクトを割り当てずにシステム時間を取得するにはどうすればよいですか?
jzdによれば、System.currentTimeMillis
を使用できます。あなたはでそれをDate
オブジェクトをを必要とするが、新しいDate
オブジェクトを作成したくない場合は、既存のDate
オブジェクトを再利用するためにDate.setTime
を使用することができます。個人的には、Date
は変更可能ですが、の場合はとなることは嫌です。同様に、Calendar
はsetTimeInMillis
の方法を有する。
可能であれば、おそらくそれをlong
のままにしておく方がよいでしょう。タイムスタンプだけが必要な場合は、効果的に、それが最善の方法でしょう。
これは動作するはずです:
System.currentTimeMillis();
あなたはSystem.currentTimeMillis()
を使用することができます。
少なくともOpenJDKでは、Date
はこれをカバーの下で使用します。
System
の呼び出しは、ネイティブのJVMメソッドです。したがって、ここではそうは考えられませんが、カバーの下で割り当てが行われているとは言えません。
使用のSystem.currentTimeMillis()又はSystem.nanoTimeの()。
nanoTime()のドキュメントから:このメソッドは、経過時間を測定するためにのみ使用でき、システムまたはウォールクロック時間の他の概念には関係しません。返される値は固定されているが任意の時刻からナノ秒を表します(将来的には値が負の値になる可能性があります)。このメソッドは、ナノ秒の精度を提供しますが、必ずしもナノ秒の精度ではありません。値の変更頻度に関する保証はありません。約292年(263ナノ秒)を超える連続コールの違いは、数値のオーバーフローによる経過時間を正確に計算しません。 – AaronF