例如,如果用户输入"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 小时"也可以(。
然后,当数字乘以系数时,通过强制自动将其转换为数字。
它首先使用相同的转换映射将数字转换为秒,然后转换为所需的单位(对此感到非常兴奋(
可以做得更好的事情:
- 当已经在正确的单位时不要转换
- 一步转换组合系数