我想把给定的时间转换成毫秒.给定的时间不是直接日期对象



给定的时间格式为'1 Day 10 Hours 10 Minutes 13 Seconds'。这里-它包括我们用来表示时间单位的符号,比如-HrHHoursHrs。其他时间单位也一样。

是否存在内置方法或已知方法?

没有,没有内置的

除了order

,如果格式不一致,可以这样解析它处理任何4单位的至少一个字符开始d, h, m、s

const ms = { s : 1000, m : 60000, h : 3600000, d : 86400000 }
const strToMS = str =>  {
const parts = str.match(/(d+ w)/g)
console.log(parts);
return parts.map(part => {
const [num, unit] = part.split(" ");
return num * ms[unit.toLowerCase()]
}).reduce((a,b)=>a+b)
};
["10 Hours 13 Seconds",
"1 day",
"1 hr",
"13 Seconds",
"2 Days 10 Hours 1 Minute 3 Seconds",
"2 Days 10 Hours 1 Minute 3 Sec"]
.forEach(timeString => console.log(timeString,strToMS(timeString)))

如果格式已知且一致-即8部分:n1天(s) n2小时(s) n3分钟(s) n4秒(s)此脚本将忽略单位

const aSecond = 1000, aMinute = 60 * aSecond, anHour = 60 * aMinute, aDay = 24 * anHour;
const strToMS = str =>  {
const [days, hours, minutes, seconds] = str.match(/d+/g)
console.log(days, hours, minutes, seconds)
return  days * aDay + hours * anHour + minutes * aMinute + seconds * aSecond
};
// Assuming n1 day(s) n2 hours n3 minutes n4 seconds, i.e. 8 parts
const timeString = "1 Day 10 Hours 10 Minutes 13 Seconds"
console.log(strToMS(timeString))

相关内容

  • 没有找到相关文章

最新更新