Получить время, прошедшее с полуночи в Java

Расчет времени, прошедшего с полуночи(в секундах или миллисекундах), является распространенной задачей в различных приложениях. Этот учебник Java Date-Time демонстрирует, как рассчитать время, прошедшее с момента, когда часы пробили полночь.

1. Узнать время, прошедшее с полуночи

Чтобы получить время, прошедшее с полуночи, мы фиксируем текущее время с помощью LocalTime.now() и время полуночи LocalTime.MIDNIGHT, а затем вычисляем разницу между ними путем вычитания.

LocalTime midnight = LocalTime.MIDNIGHT;LocalTime currentTime = LocalTime.now();long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);

ChronoUnit поддерживает различные единицы времени(например, миллисекунды), которые мы можем использовать для получения разницы и в других единицах времени.

LocalTime midnight = LocalTime.MIDNIGHT;LocalTime currentTime = LocalTime.now();long millis = ChronoUnit.MILLIS.between(midnight, currentTime);

2. Получите время, прошедшее с полуночи в указанном часовом поясе

По умолчанию LocalTime.now() возвращает время в системных часах в часовом поясе по умолчанию/текущем часовом поясе. Если мы хотим получить прошедшее время в указанном часовом поясе, мы можем передать информацию о поясе следующим образом:

LocalTime currentTime = LocalTime.now(ZoneId.of("America/New_York"));LocalTime midnight = LocalTime.MIDNIGHT;long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);

Аналогично мы можем получить время, прошедшее с полуночи по UTC, следующим образом:

LocalTime currentTime = LocalTime.now(ZoneOffset.UTC);LocalTime midnight = LocalTime.MIDNIGHT;long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);

3. Использование LocalDateTime или ZonedDateTime

Если у нас есть экземпляр LocalDateTime в приложении, и мы хотим его использовать, то процесс получения прошедшего времени остается тем же. Мы получаем точный экземпляр в полночь, а затем вычитаем текущее время.

Следующая программа Java использует класс LocalDateTime для получения времени, прошедшего с полуночи.

LocalDateTime currentTime = LocalDateTime.now();LocalDateTime midnight = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);

Аналогичным образом мы можем использовать этот процесс и для класса ZonedDateTime.

ZonedDateTime currentTime = ZonedDateTime.now();ZonedDateTime midnight = ZonedDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT, ZoneId.systemDefault());long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);

4. Заключение

В этом уроке Java мы изучили концепцию прошедшего времени и использовали пакет Java java.time для вычисления времени, прошедшего с полуночи. Мы продемонстрировали использование таких классов, как LocalTime, LocalDateTime и ZonedDateTime в программах Java.

Исходный код на Github

Прокрутить вверх