Instant и временные метки

Базовый Java
≈ 2 мин чтения

Instant — конкретная точка на временной шкале

Когда важно зафиксировать не «местное время на часах», а момент, когда событие действительно произошло, нужен Instant. Он не хранит название города и не показывает привычную локальную дату сам по себе. Его задача — однозначно представить точку на временной шкале относительно UTC.

Java
Instant createdAt = Instant.now();
System.out.println(createdAt);

Строковое представление обычно выглядит примерно как 2026-09-18T09:30:00Z. Буква Z означает нулевое смещение от UTC. Такое значение удобно хранить для времени создания записи, отправки события, начала запроса или любого другого факта, который должен означать один и тот же момент для всех систем.

Epoch time

Во многих протоколах и хранилищах момент передают числом относительно эпохи 1970-01-01T00:00:00Z. Instant умеет преобразовываться в секунды или миллисекунды от этой точки.

Java
Instant instant = Instant.parse("2026-09-18T09:30:00Z");

long seconds = instant.getEpochSecond();
long millis = instant.toEpochMilli();

Обратное преобразование выполняется через фабричные методы:

Java
Instant fromMillis = Instant.ofEpochMilli(millis);
Секунды и миллисекунды нельзя путать. Оба значения часто называют «timestamp», но число миллисекунд примерно в тысячу раз больше числа секунд. При обмене данными всегда проверяй единицу измерения контракта.

Instant и локальное время

Один Instant может отображаться по-разному в разных часовых поясах. Чтобы получить человеческую дату и время, к моменту нужно применить правила зоны.

Java
Instant instant = Instant.parse("2026-09-18T09:30:00Z");

ZonedDateTime berlin = instant.atZone(ZoneId.of("Europe/Berlin"));
ZonedDateTime tokyo = instant.atZone(ZoneId.of("Asia/Tokyo"));

berlin и tokyo показывают разные значения на часах, но указывают на один и тот же момент.

Когда выбирать Instant

Если значение отвечает на вопрос «когда именно это произошло?», Instant обычно является хорошей базовой моделью. Если же смысл — «каждый день в 09:00» или «день рождения 12 мая», то абсолютный момент появляется только после добавления контекста и другой тип выражает задачу точнее.

Проверь себя

Для какого значения лучше всего подходит Instant?

Разбор задания

Ментор знает решение и поможет тебе прийти к нему самостоятельно
Ментор
Можем обсудить текущее задание или любую теорию по Java. Я помогу разобраться и найти следующий шаг.
Войди, чтобы использовать Ментора Ментор учитывает текущую задачу и историю диалога.
Войти