Экспресс 24 часа в любом Java TimeUnit
Если моя единица времени имеет тип секунд, а продолжительность цикла составляет 20 секунд после 86400/20 = 4320 циклов, то проходит 24 часа.
long numberOfCyclesToReach24Hours(long cycleDuration, TimeUnit unit) {
// if I knew that unit is of type seconds I could
return TimeUnit.HOURS.toSeconds(24) / cycleDuration
// but if it is of type MILLISECONDS for example I have to
//return TimeUnit.HOURS.toMillis(24) / cycleDuration
}
Есть элегантное решение этой проблемы, или мне действительно нужно переключить регистр всех типов? Я знаю, что это случится не так часто, но если в будущем TimeUnit
тип введен, код должен быть адаптирован:)
Я также думал о чем-то вроде использования TimeUnit.values
метод и полагаясь на порядок возвращаемого типа и проверяя положение входного блока в нем, чтобы узнать, по какой константе (1000L, 60L и т. д.) я мог бы рассчитать количество циклов самостоятельно без каких-либо toSeconds
, toMillis
и т.д. методы, но это еще страшнее и страннее:)
1 ответ
Похоже, вы просто ищете convert
метод:
Преобразует данное время в данной единице в эту единицу.
return unit.convert(24, TimeUnit.HOURS) / cycleDuration;