如果在 Javascript 中指定了十进制时间,如何计算最接近的整数时间单位



例如,如果用户输入"2.5小时"或"65.2分钟"之类的文本,我想编写一个算法或一段代码,建议2.5小时,例如150分钟或150 * 60秒,依此类推。

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

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 小时"也可以(。

然后,当数字乘以系数时,通过强制自动将其转换为数字。

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

可以做得更好的事情:

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

相关内容

  • 没有找到相关文章

最新更新