倒计时
/**
* 计算两个时间段之间的毫秒差值
* @param {*} date1 当前时间
* @param {*} date2 未来某个时间
*/
export function djs(date1, date2) {
const ms = date2 - date1;
const ss = ms / 1000;
const days = parseInt(ss / 60 / 60 / 24, 10);
const hours = parseInt((ss / 60 / 60) % 24, 10);
const minutes = parseInt((ss / 60) % 60, 10);
const seconds = parseInt((ms / 1000) % 60, 10);
return {
days,
hours,
minutes,
seconds,
};
}
/**
* 缺0补0,长度统一
* @param {*} num 待处理的数字
* @param {*} length 希望的倒计时长度
*/
export function fix(num, length) {
return num.toString().length < length ? `0${num}` : num;
}
/**
* 倒计时
* @param {*} data 未来的时间,格式"2020-2-11 17:37:00"
* @param {*} day 填写天的那个元素的id名
* @param {*} hour 填写小时的那个元素的id名
* @param {*} minute 填写分钟的那个元素的id名
* @param {*} second 填写秒的那个元素的id名
* @param {*} node 当倒计时完成,需要删除的元素的class名
* 注意ipone不识别"2020-02-13 11:16:00"中的横杠。识别/
*/
export function countDown(data, day, hour, minute, second, node) {
const timer = setInterval(() => {
const date1 = new Date();
const reg = new RegExp('-', 'g');
const a = data.replace(reg, '/');
const date2 = new Date(a);
const time = djs(date1, date2);
let { days } = time;
let { hours } = time;
let { minutes } = time;
let { seconds } = time;
days = fix(days, 2);
hours = fix(hours, 2);
minutes = fix(minutes, 2);
seconds = fix(seconds, 2);
console.log(days, hours, minutes, seconds);
if (days > 0 || hours > 0 || minutes > 0 || seconds > 0) {
document.getElementById(day).innerHTML = days;
document.getElementById(hour).innerHTML = hours;
document.getElementById(minute).innerHTML = minutes;
document.getElementById(second).innerHTML = seconds;
} else {
clearInterval(timer);
const element = document.getElementsByClassName(node)[0];
element.parentNode.removeChild(element);
}
}, 1000);
}
时间戳转换
/**
* 日期格式转换
* @param {*} val 日期字符串
*/
export function ChangeDateFormat(val) {
if (val != null) {
const date = new Date(parseInt(val.replace("/Date(", "").replace(")/", ""), 10));
// 月份为0-11,所以+1,月份小于10时补个0
const month = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : date.getMonth() + 1;
const currentDate = date.getDate() < 10 ? `0${date.getDate()}` : date.getDate();
const hour = date.getHours() < 10 ? `0${date.getHours()}` : date.getHours();
const minute = date.getMinutes() < 10 ? `0${date.getMinutes()}` : date.getMinutes();
const second = date.getSeconds() < 10 ? `0${date.getSeconds()}` : date.getSeconds();
const dd = `${date.getFullYear()}-${month}-${currentDate} ${hour}:${minute}:${second}`;
return dd;
}
return "";
}
设置两分钟,判断是否超时函数
/**
* minute分钟内是否有效
* @param {*} val 时间
*/
export function alterTimer(val,minute) {
if (val != null) {
const date = new Date(val);
date.setMinutes(date.getMinutes() + minute);
return date.getTime() > new Date();
}
return false;
}
// 判断当前时间是否是val这个时间后的days天外
checkTime (val,days) {
const date=new Date(val);
date.setDate(date.getDate()+days);
return new Date() > date.getTime();
},