Date.getTime () возвращает миллисекунды с 1 января 1970 года. Unixtime - это секунды с 1 января 1970 года. Обычно я не пишу код в java, но я работаю над некоторыми исправлениями ошибок. У меня есть:
Date now = new Date();
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();
Есть ли лучший способ получить unixtime в Java?
java
unix-timestamp
Гари Ричардсон
источник
источник
long
, а неint
. Нет никакой причины использоватьint
метку времени, если только вы не используете другую гранулярность, такую как 1 секунда = 4 секунды и т. Д. Либо это, либо скрывайте свой код, чтобы будущие поколения не могли видеть, насколько вы некомпетентны.Ответы:
Избегайте создания объекта Date с System.currentTimeMillis () . Деление на 1000 возвращает вас к эпохе Unix.
Как упомянуто в комментарии, вы, как правило, хотите, чтобы примитивный long (строчные-l long), а не коробочный объект long (прописные-L Long) для типа переменной unixTime.
источник
В Java 8 добавлен новый API для работы с датами и временем. С Java 8 вы можете использовать
Instant.now()
возвращает Instant , представляющий текущее системное время. СgetEpochSecond()
вами вы получите время эпохи (Unix Time) отInstant
.источник
Instant.now().getEpochSecond()
,new Date().getTime()
иSystem.currentTimeMillis()
import java.time.Instant
если вы в Скале