"
最近在项目中遇到一个倒计时功能,在网上没有找到合适的,就自己写了个方法。贴在这里,权且当个记录。
export const timeRun = (timeStr, callBack) => {
let timeArr = timeStr.split(':');
if (timeArr.length == 2) {//格式 5:00
let minute = timeArr【0】;
let second = timeArr【1】;
if (second == '00') {
let minuteInt = parseInt(minute);
minuteInt--;
if (minuteInt.toString().length == 1) {
//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDM2ODY4NA==.html
minute = ""0"" + minuteInt;} else {
minute = minuteInt.toString();
}
second = ""59"";
} else {
let secondInt = parseInt(second);
secondInt--;
if (secondInt.toString().length == 1) {
second = ""0"" + secondInt;
} else {
second = secondInt.toString();
}
}
if ((minute == '00' || minute == '0') && (second == '00' || second == '0')) {
callBack();
return ""00:00"";
}
return minute + "":"" + second;
} else if (timeArr.length == 3) {//格式 1:00:00
let hour = timeArr【0】;
let minute = timeArr【1】;
let second = timeArr【2】;
if (second == '00') {
if (minute == '00') {
let hourInt = parseInt(hour);
hourInt--;
minute = '59';
hour = hourInt.toString();
} else {
let minuteInt = parseInt(minute);
minuteInt--;
if (minuteInt.toString().length == 1) {
minute = ""0"" + minuteInt;
} else {
minute = minuteInt.toString();
}
second = ""59"";
}
} else {
let secondInt = parseInt(second);
secondInt--;
second = second.toString();
}
if ((hour == '00' || hour == '0') && (minute == '00' || minute == '0') && (second == '00' || second == '0'))
return hour + "":"" + minute + "":"" + second;
} else {
console.error(""倒计时时间格式错误"");
}
}
View Code
使用方法如下,其中finished是回调函数:
let //代码效果参考:https://v.youku.com/v_show/id_XNjQwNjgyNjQ0MA==.html
time = '05:00';let timer = setInterval(() => {
time = timeRun(time, finished);
if(time == ""00:00"" || time == ""0:00:00""){
clearInterval(timer);
}
}, 1000);
View Code
"
![image.png](https://ucc.alicdn.com/pic/developer-ecology/hnrk7epeorhrk_deb924e61274409cbfe331ba87165530.png)