Подтвердить что ты не робот

Получение "unixtime" в Java

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

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

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

ОБНОВЛЕНИЕ

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

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

Ответ 1

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

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

long unixTime = System.currentTimeMillis() / 1000L;

Ответ 2

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

long unixTimestamp = Instant.now().getEpochSecond();

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