首页 > 解决方案 > 如果在 Javascript 中指定小数时间,如何计算最接近的整数时间单位

问题描述

例如,如果用户输入像“2.5 小时”或“65.2 分钟”这样的文本,我想编写一个算法或一段代码来建议 2.5 小时,比如 150 分钟或 150 * 60 秒,依此类推.

标签: javascripttimeecmascript-6

解决方案


这里是一个通用函数,可以转换为其他时间单位,默认为秒

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小时”也可以)。

然后该数字乘以系数时通过强制转换自动转换为数字。

它首先将数字转换为秒,然后转换为所需的单位,使用相同的转换图(对此非常兴奋)

可以做得更好的事情:

  • 已经在正确的单位中时不要转换
  • 一步转换组合系数

推荐阅读