1. Create a new DHMScountDown.js
/** 时分秒倒计时 */
let timer = null;
export default {
/**
* 开始
* @param callback(Object) 回调函数
* @param endDate 截至日期
* @param interval 间隔时间毫秒(默认1秒)
*/
start: (callback, endDate, interval = 1000) => {
if (timer) return;
timer = setInterval(() => {
let now = Date.now();
let end = new Date(endDate);
let leftTime = end.getTime() - now;
let d, h, m, s;
if (leftTime >= 0) {
d = Math.floor(leftTime / 1000 / 60 / 60 / 24);
h = Math.floor((leftTime / 1000 / 60 / 60) % 24);
m = Math.floor((leftTime / 1000 / 60) % 60);
s = Math.floor((leftTime / 1000) % 60);
callback({
d: String(d).length < 2 ? `0${
d}` : `${
d}`,
h: String(h).length < 2 ? `0${
h}` : `${
h}`,
m: String(m).length < 2 ? `0${
m}` : `${
m}`,
s: String(s).length < 2 ? `0${
s}` : `${
s}`,
});
} else {
clearInterval(timer);
timer = null;
return;
}
}, interval);
},
/** 清理定时器 */
clear: () => {
clearInterval(timer);
timer = null;
},
};
2. use
import DHMScountDown from "./DHMScountDown.js"
//开始倒计时
HMScountDown.start(({
d, h, m, s}) => {
console.log(`${
d}天 ${
h}:${
m}:${
s}`)
}, "2023-3-7 16:50");
//清除倒计时
HMScountDown.clear()