Как получить текущую дату и время
Короткий ответ
Классы из пакета java.time возвращают текущие значения через now():
void main() {
IO.println(LocalDate.now());
IO.println(LocalTime.now());
IO.println(LocalDateTime.now());
}Результат:
2026-10-04
06:22:22.014925300
2026-10-04T06:22:22.015926700Вы увидите своё текущее время. LocalDate — только дата, LocalTime — только время, LocalDateTime — и то и другое без часового пояса.
В нужном часовом поясе
now() использует часовой пояс компьютера. Передайте ZoneId, чтобы узнать время в другом месте:
void main() {
IO.println(ZonedDateTime.now(ZoneId.of("Europe/Berlin")));
IO.println(ZonedDateTime.now(ZoneId.of("Asia/Tokyo")));
}Результат:
2026-10-04T08:22:21.174894100+02:00[Europe/Berlin]
2026-10-04T15:22:21.212486100+09:00[Asia/Tokyo]Момент времени
Instant — момент на шкале времени в UTC. Его используют для журналов и хранения в базе:
void main() {
Instant now = Instant.now();
IO.println(now);
IO.println(now.toEpochMilli());
}Результат:
2026-10-04T06:22:22.378958700Z
1791094942378Отдельные части
Из даты можно получить год, месяц, день и день недели:
void main() {
LocalDate today = LocalDate.now();
IO.println(today.getYear() + " " + today.getMonth() + " " + today.getDayOfMonth() + " " + today.getDayOfWeek());
}Результат:
2026 OCTOBER 4 SUNDAYЧастая ошибка
Использовать старые классы Date и Calendar. Они изменяемые, месяцы в Calendar нумеруются с нуля, а Date.toString() выводит дату в неудобном формате. В новом коде используйте java.time, а Date встречайте только на границе со старыми библиотеками — date.toInstant() переводит её в новый API.
Функции из этого ответа
- LocalDate.now() — Возвращает сегодняшнюю дату по часам и часовому поясу компьютера.
- LocalDateTime — Дата и время без часового пояса — например, время встречи в календаре.
- ZonedDateTime — Дата и время в конкретном часовом поясе — с учётом летнего времени.
- Instant — Точный момент времени на временной шкале UTC — для логов, меток времени и замеров.