Подтвердить что ты не робот

Java: почему TimeUnit не хватает перечислений?

Мне просто интересно, почему некоторые перечисления отсутствуют в классе TimeUnit Java?

Фактически максимальное время - ДЕНЬ, в то время как я хотел бы использовать такие вещи, как НЕДЕЛЯ, ГОД...

4b9b3361

Ответ 1

Константа TimeUnit.DAYS представляет интервал в 24 часа, а не календарный день (с полуночи до полуночи). Все, что находится за пределами дня (неделя, месяц, год), - это блок календаря, а не единица времени. Продолжительность календарных единиц зависит от используемого календаря: например, неделя может быть длиннее или короче на час в недели, когда переход на летнее время идет и выходит из строя, високосные годы длиннее на один день и т.д. Вот почему включение календарных единиц в перечисление TimeUnit не имеет смысла.

Ответ 2

В Java 8 был представлен ChronoUnit, у вас в одном перечислении есть все обычные единицы времени между NANOS (наносекундами) и CENTURIES, MILLENIA и даже FOREVER: https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html (см. также комментарий Жюльена Кронегга к выбранному ответу)