В Java временные метки представлены следующими классами:
- java.time.Instant с Java 8
- java.sql.Timestamp до Java 7
1. Получите текущую временную метку с помощью Instant
Instant представляет собой уникальную точку на временной шкале и в первую очередь используется для записи временных меток событий в приложении. Это фактическая точка времени, выраженная с использованием UTC – универсальной шкалы времени.
Instant instant = Instant.now();System.out.println(instant); //2022-02-15T08:06:21.410588500Z
2. java.sql.Timestamp(Java 7 или более ранняя версия)
Этот устаревший класс имеет 2 метода для получения текущей временной метки.
Метка времени timestamp1 = new Timestamp(System.currentTimeMillis());Дата дата = новая Дата();Метка времени timestamp2 = new Timestamp(date.getTime());System.out.println(timestamp1); //2022-02-15 13:55:56.18System.out.println(timestamp2); //2022-02-15 13:55:56.18
3. Мгновенное время против ZonedDateTime
На высоком уровне классы Instant и ZonedDateTime кажутся похожими, но это не так.
- ZonedDateTime — это реальный момент времени, но в определенном часовом поясе.
- Мгновенье — это момент времени в формате UTC.
Значение Instant.now() будет абсолютно одинаковым во всех частях слов одновременно, в то время как значение ZonedDateTime.now() будет скорректировано в соответствии со значением часового пояса, связанным с экземпляром,
Как правило, рассмотрите возможность использования класса Instant для хранения значений временных меток в базе данных и передачи между различными приложениями. И используйте экземпляр ZonedDateTime для отображения информации пользователям в их конкретных часовых поясах.