Java: почему TimeUnit не хватает перечислений?
Мне просто интересно, почему некоторые перечисления отсутствуют в классе TimeUnit Java?
Фактически максимальное время - ДЕНЬ, в то время как я хотел бы использовать такие вещи, как НЕДЕЛЯ, ГОД...
Ответы
Ответ 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 (см. также комментарий Жюльена Кронегга к выбранному ответу)