最近在做一个项目的时候,有一个考试部分,需要用到一个考试时间的倒计时,整理了一下思路,把网站做活动的倒计时代码一并写完,以后遇到就可以直接使用了,代码如下:
// 参数obj原型,对应的解释在函数内,本代码仅供参考,有问题欢迎交流
obj={
mode: Number, //
start: Number, //
allTime: Number, //
endTime: Number, //
exam: Number, //
active: Number, //
}
function timeEnd(obj) {
// mode ---- 1-分秒 2-时分秒 3-天时分秒 ----
// start ---- 开始时间(必填)
// allTime ---- 总时间(比如考试时间为120分钟)
// endTime ---- 截止时间(比如活动开始时间是某一个时间)
// exam ---- 考试模式(传入start开始时间和allTime总时间)
// active ---- 活动倒计时模式(传入截止时间)
if (!obj.exam && !obj.active) {
return {
error: true,
msg: '缺少传入的参数exam或active',
}
} else if (obj.exam && obj.active) {
return {
error: true,
msg: 'exam和active不能同时传入',
}
}
// 返回剩余的天时分秒数量
if (obj.mode !== 1 && obj.mode !== 2 && obj.mode !== 3) {
obj.mode = 2;
}
var timeObj = {
D: 0, // 剩余天数
H: 0, // 剩余小时
M: 0, // 剩余分钟
S: 0, // 剩余秒钟
error: false, // 错误提示
msg: '',
};
var now = new Date().getTime();
if (obj.exam) {
// 取 总时间-已经过去的时间 换算为天时分秒
if (obj.start == undefined || obj.allTime == undefined) {
return {
error: true,
msg: '缺少传入参数start或allTime'
}
}
var differ = now - obj.start; // 已经过去的时间
var remainTime = parseInt((obj.allTime - differ) / 1000); //换算为秒
if (obj.mode === 1) { // 分秒
timeObj.M = parseInt(remainTime / 60); // 剩余分钟
timeObj.S = parseInt(remainTime - timeObj.M * 60); // 剩余秒钟
} else if (obj.mode === 2) { // 时分秒
timeObj.H = parseInt(remainTime / 3600);
timeObj.M = parseInt((remainTime - timeObj.H * 3600) / 60);
timeObj.S = parseInt((remainTime - timeObj.H * 3600 - timeObj.M * 60));
} else if (obj.mode === 3) { // 天时分秒
timeObj.D = parseInt(remainTime / 24 / 3600);
timeObj.H = parseInt((remainTime - timeObj.D * 24 * 3600) / 3600);
timeObj.M = parseInt((remainTime - timeObj.D * 24 * 3600 - timeObj.H * 3600) / 60);
timeObj.S = parseInt((remainTime - timeObj.D * 24 * 3600 - timeObj.H * 3600 - timeObj.M * 60));
}
} else if (obj.active) {
// 取 截止时间-现在时间
if (!obj.endTime) {
return {
error: true,
msg: '缺少参数endTime',
}
}
var differ = obj.endTime - now;
var remainTime = differ / 1000; //换算为秒
timeObj.D = parseInt(remainTime / 24 / 3600);
timeObj.H = parseInt((remainTime - timeObj.D * 24 * 3600) / 3600);
timeObj.M = parseInt((remainTime - timeObj.D * 24 * 3600 - timeObj.H * 3600) / 60);
timeObj.S = parseInt((remainTime - timeObj.D * 24 * 3600 - timeObj.H * 3600 - timeObj.M * 60));
}
return timeObj;
}
代码返回的是一个对象,里面有剩余的天,时,分,秒参数,直接拿出来用即可