Здесь общая функция, которая может конвертировать в другие единицы времени по умолчанию в секундах.
function convertTo(input, to='seconds'){
const conversionToSeconds = {'seconds':1,'minutes': 60, 'hours': 60*60}
const [timeValue, timeUnit] = input.trim().split(/ +/);
const timeInSeconds = timeValue * conversionToSeconds[timeUnit];
return timeInSeconds/conversionToSeconds[to]
}
Примеры:
> convertTo('2.5 hours')
9000
> convertTo('2.5 hours', 'minutes')
150
Работает путем обрезки и разбиения строки на один или несколько пробелов (также работает «3 часа»).
Затем число автоматически преобразуется в число путем принуждения, когда оно умножается на коэффициент.
Сначала он преобразует число в секунды, а затем в желаемую единицу, используя ту же карту преобразования (довольно взволнованно)
Что можно сделать лучше:
- не конвертировать, когда уже в нужной единице
- конвертировать за один шаг, комбинируя коэффициенты