Как получить системное время в Java без создания новой даты - PullRequest
38 голосов
/ 01 февраля 2011

Мне нужно получить системную дату, а Java предоставляет new Date().getTime().

Но мне нужно избегать выделения новых объектов (я работаю над встроенной системой).Как я могу получить системное время без выделения нового Date объекта?

Ответы [ 4 ]

59 голосов
/ 01 февраля 2011

Как говорит JZD, вы можете использовать System.currentTimeMillis.Если вам нужен в Date объекте, но вы не хотите создавать новый Date объект, вы можете использовать Date.setTime для повторного использования существующего Date объекта,Лично я ненавижу тот факт, что Date является изменчивым, но может быть это полезно для вас в данном конкретном случае.Точно так же у Calendar есть метод setTimeInMillis.

Если возможно, хотя, вероятно, было бы лучше просто сохранить его как long.Если вам нужна эффективная временная метка, тогда это будет наилучший подход.

49 голосов
/ 01 февраля 2011

Это должно работать:

System.currentTimeMillis();
11 голосов
/ 01 февраля 2011

Вы можете использовать System.currentTimeMillis().

По крайней мере, в OpenJDK, Date использует это под обложками.

Вызовв System используется собственный метод JVM, поэтому мы не можем с уверенностью сказать, что под покровами не происходит никакого выделения, хотя это кажется маловероятным.

7 голосов
/ 01 февраля 2011

Использовать System.currentTimeMillis () или System.nanoTime () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...