Расчет времени, прошедшего с полуночи(в секундах или миллисекундах), является распространенной задачей в различных приложениях. Этот учебник 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.