Получение "unixtime" в Java - PullRequest
242 голосов
/ 09 апреля 2009

Date.getTime () возвращает миллисекунды с 1 января 1970 года. Unixtime - это секунды с 1 января 1970 года. Обычно я не пишу код в java, но работаю над некоторыми исправлениями ошибок. У меня есть:

Date now = new Date();      
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();

Есть ли лучший способ получить unixtime в Java?

UPDATE

Основываясь на предложении Джона М, я получил:

return (int) (System.currentTimeMillis() / 1000L);

Ответы [ 2 ]

444 голосов
/ 09 апреля 2009

Избегайте создания объекта Date w / System.currentTimeMillis () . Деление на 1000 возвращает вас к эпохе Unix.

Как уже упоминалось в комментарии, вы обычно хотите, чтобы примитивный long (строчные-l long), а не коробочный объект long (прописные-L Long) для типа переменной unixTime.

long unixTime = System.currentTimeMillis() / 1000L;
242 голосов
/ 11 июля 2014

В Java 8 добавлен новый API для работы с датами и временем. С Java 8 вы можете использовать

import java.time.Instant
...
long unixTimestamp = Instant.now().getEpochSecond();

Instant.now() возвращает Instant , который представляет текущее системное время. С getEpochSecond() вы получаете время эпохи (Unix Time) от Instant.

...