Как преобразовать timestamp в дату
Короткий ответ
Unix timestamp — количество секунд с 1 января 1970 года по UTC. Instant.ofEpochSecond() превращает его в момент времени:
void main() {
Instant instant = Instant.ofEpochSecond(1_772_960_400L);
IO.println(instant);
}Результат:
2026-03-08T09:00:00ZВ местное время
Чтобы получить дату и время в нужном поясе, добавьте ZoneId:
void main() {
var dateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(1_772_960_400L), ZoneId.of("Europe/Berlin"));
IO.println(dateTime);
}Результат:
2026-03-08T10:00Миллисекунды
JavaScript и многие API отдают время в миллисекундах — для них есть ofEpochMilli():
void main() {
IO.println(Instant.ofEpochMilli(1_772_960_400_123L));
}Результат:
2026-03-08T09:00:00.123ZОбратно в число
getEpochSecond() и toEpochMilli() возвращают timestamp:
void main() {
var moment = LocalDateTime.of(2026, 3, 8, 9, 0).atZone(ZoneOffset.UTC).toInstant();
IO.println(moment.getEpochSecond());
IO.println(moment.toEpochMilli());
}Результат:
1772960400
1772960400000Частая ошибка
Перепутать секунды и миллисекунды. Миллисекунды, переданные как секунды, дают дату через десятки тысяч лет:
void main() {
long millis = 1_772_960_400_000L;
IO.println(Instant.ofEpochSecond(millis));
IO.println(Instant.ofEpochMilli(millis));
}Результат:
+58152-11-17T00:00:00Z
2026-03-08T09:00:00ZФункции из этого ответа
- Instant — Точный момент времени на временной шкале UTC — для логов, меток времени и замеров.