web-dev-qa-db-ja.com

新しい日付を作成せずにシステム時間をJavaで取得する方法

システムの日付を取得する必要があり、Javaはnew Date().getTime()を提供します。

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

38
michelemarcon

Jzdが言うように、System.currentTimeMillis。必要な場合はinDateオブジェクトで、newDateオブジェクトを作成したくない場合は、Date.setTime既存のDateオブジェクトを再利用します。個人的には、Dateが変更可能であるという事実は嫌いですが、この特定のケースでは多分が有用です。同様に、CalendarにはsetTimeInMillisメソッドがあります。

ただし、可能であれば、longとして保持することをお勧めします。タイムスタンプのみが効果的に必要な場合は、それが最善の方法です。

59
Jon Skeet

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

System.currentTimeMillis();
49
jzd

System.currentTimeMillis() を使用できます。

少なくともOpenJDKでは、 Date はこれを裏で使用します。

System の呼び出しはネイティブJVMメソッドに対するものであるため、ここではありそうもないように見えますが、内部で割り当てが発生していないとは言えません。

11
Mark Elliot

System.currentTimeMillis()またはSystem.nanoTime()を使用します。

7