ChronoUnit.between()
Считает количество целых единиц (дней, месяцев, часов) между двумя датами или моментами.
Доступно с: Java 8
Синтаксис
public long between(Temporal start, Temporal end)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| start | Temporal | Начало — LocalDate, LocalDateTime, Instant и т. п. |
| end | Temporal | Конец того же типа; не включается. |
Возвращаемое значение
longКоличество единиц; отрицательное, если end раньше start.
Примеры
Сколько дней до события:
void main() {
LocalDate today = LocalDate.of(2025, 3, 14);
LocalDate newYear = LocalDate.of(2026, 1, 1);
IO.println(ChronoUnit.DAYS.between(today, newYear));
IO.println(ChronoUnit.WEEKS.between(today, newYear));
IO.println(ChronoUnit.MONTHS.between(today, newYear));
}Результат:
293
41
9Неполные единицы отбрасываются:
void main() {
LocalDateTime a = LocalDateTime.of(2025, 3, 14, 9, 0);
LocalDateTime b = LocalDateTime.of(2025, 3, 14, 11, 59);
IO.println(ChronoUnit.HOURS.between(a, b));
IO.println(ChronoUnit.MINUTES.between(a, b));
}Результат:
2
179Примечания
То же можно записать как start.until(end, ChronoUnit.DAYS). В отличие от Period, результат — одно число в выбранных единицах.
См. также
- Period — Календарный промежуток в годах, месяцах и днях — например, возраст.
- Duration — Промежуток времени в секундах и наносекундах — часы, минуты, секунды.
- LocalDate.of() — Создаёт дату из года, месяца и дня.
Вопросы и ответы по теме
В учебнике
- Даты и время — Пакет java.time — LocalDate, LocalTime, LocalDateTime, арифметика дат, Period, Duration, ChronoUnit, часовые пояса и Instant.