纠正 JavaScript 中的时间字符串
问题
我们需要编写一个JavaScript函数,该函数接收“HH:MM:SS”格式的时间字符串。
但是另外还有一个问题,这么多次断弦,MM部分可能会超过60,SS部分也可能会超过60。
我们的函数应该对字符串进行必要的更改并返回新的修正后的字符串。
例如-
"08:11:71" -> "08:12:11"
示例
以下是代码-
const str = '08:11:71';
const rectifyTime = (str = '') => {
if(!Boolean(str)){
return str;
};
const re = /^(\d\d):(\d\d):(\d\d)$/;
if (!re.test(str)){
return null;
};
let [h, m, s] = str.match(re).slice(1,4).map(Number);
let time = h * 3600 + m * 60 + s;
s = time % 60;
m = (time / 60 |0) % 60;
h = (time / 3600 |0) % 24;
return [h, m, s]
.map(String)
.join(':');
};
console.log(rectifyTime(str));输出结果以下是控制台输出-
08:12:11