Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi thời gian theo định dạng “HH:MM:SS”.
Nhưng do lỗi cộng, nhiều chuỗi thời gian bị hỏng, nghĩa là phần MM có thể vượt quá 60, và phần SS cũng có thể vượt quá 60.
Hàm phải thực hiện các thay đổi cần thiết cho chuỗi và trả về chuỗi đã chỉnh sửa.
Ví dụ:
"08:11:71" -> "08:12:11"
Ví dụ
Dưới đây là mã:
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));
Kết quả
Kết quả console:
08:12:11