Как рассчитать ближайшую целую единицу времени, если в Javascript указано десятичное время - PullRequest
0 голосов
/ 04 мая 2018

Например, если пользователь вводит текст, такой как «2,5 часа» или «65,2 минуты», я хочу написать алгоритм или фрагмент кода, который будет предлагать 2,5 часа, например, 150 минут или 150 * 60 секунд. и т. д.

1 Ответ

0 голосов
/ 04 мая 2018

Здесь общая функция, которая может конвертировать в другие единицы времени по умолчанию в секундах.

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 часа»).

Затем число автоматически преобразуется в число путем принуждения, когда оно умножается на коэффициент.

Сначала он преобразует число в секунды, а затем в желаемую единицу, используя ту же карту преобразования (довольно взволнованно)

Что можно сделать лучше:

  • не конвертировать, когда уже в нужной единице
  • конвертировать за один шаг, комбинируя коэффициенты
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...