Получение "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);
Ответы
Ответ 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
.