获取时间差
思路:
1、准备两个时间对象
2、两个时间对象相减(可以,有兼容问题,IE低版本不好使)
==>得到:就是两个时间对象时间戳的差值
==>为了兼容,获取两个时间节点的时间戳,相减
==>相减以后去一个绝对值,不需要考虑谁大谁小
==>结果是ms,最好 /1000以后再取整
3、换算
==>换算天
=>diffTime / 一天的秒数,取整
==>换算小时
=>diffTime % 一天的秒数 / 一小时的秒数,取整
==>换算分钟
=>diffTime % 一小时的秒数 / 一分钟的秒数,取整
==>换算秒
=>diffTime % 一分钟的秒数,取整
//1、准备两个时间对象
var time1 = new Date();
//月份是数字的时候,0表示一月,11表示12月
var time2 = new Date(2022, 3, 15, 0, 0, 0);
//2、使用时间戳相减
var diffTime = Math.round(
Math.abs(time1.getTime() - time2.getTime()) / 1000
);
console.log(diffTime);
//3、换算
//换算天
var day = parseInt(diffTime / (60 * 60 * 24));
console.log(day);
//换算小时
var hours = parseInt((diffTime % (60 * 60 * 24)) / (60 * 60));
console.log(hours);
//换算分
var minutes = parseInt((diffTime % (60 * 60)) / 60);
console.log(minutes);
//换算秒
var seconds = diffTime % 60;
console.log(seconds);
console.log(`还有${day}天${hours}小时${minutes}分钟${seconds}秒`);
封装
把计算时间差封装起来
1、准备一个函数,接收两个时间对象
2、在函数内部计算时间差
3、返回结果
=>返回一个什么数据类型
1、字符串:返回什么,就只能用什么,不然要拆开
->缺点:使用不够灵活
2、数组:数据足够灵活,指向性不够明确
->缺点:每一次使用都需要看一次源码
3、对象:数据足够灵活,指向性足够明确
//1、准备函数
function getTimeDifference(time1, time2) {
//使用时间戳相减
var diffTime = Math.round(
Math.abs(time1.getTime() - time2.getTime()) / 1000
);
//换算天
var day = parseInt(diffTime / (60 * 60 * 24));
//换算小时
var hours = parseInt((diffTime % (60 * 60 * 24)) / (60 * 60));
//换算分
var minutes = parseInt((diffTime % (60 * 60)) / 60);
//换算秒
var seconds = diffTime % 60;
//1、使用字符串
//0天1时23分9分 string
// return `${day}天${hours}时${minutes}分${seconds}分`;
//使用数组
//(4) [0, 1, 21, 30]
// return [day, hours, minutes, seconds];
//使用对象
// {day: 0, hours: 1, minutes: 20, seconds: 16}
return {
day: day,
hours: hours,
minutes: minutes,
seconds: seconds,
};
}
var time1 = new Date();
//月份是数字的时候,0表示一月,11表示12月
var time2 = new Date(2022, 3, 15, 0, 0, 0);
var res = getTimeDifference(time1, time2);
console.log(res);
/**
* 获取时间差
*@param {TIME} time1 时间节点1
*@param {TIME} time2 时间节点2
*@retrun {Object} 以对象形式返回时间差
*
*/
function getTimeDifference(time1, time2) {
//使用时间戳相减
var diffTime = Math.round(
Math.abs(time1.getTime() - time2.getTime()) / 1000
);
//换算天
var day = parseInt(diffTime / (60 * 60 * 24));
//换算小时
var hours = parseInt((diffTime % (60 * 60 * 24)) / (60 * 60));
//换算分
var minutes = parseInt((diffTime % (60 * 60)) / 60);
//换算秒
var seconds = diffTime % 60;
return {
day: day,
hours: hours,
minutes: minutes,
seconds: seconds,
};
}
封装为utils.js文件
/**
* 获取时间差
*@param {TIME} time1 时间节点1
*@param {TIME} time2 时间节点2
*@retrun {Object} 以对象形式返回时间差
*
*/
function getTimeDifference(time1, time2) {
//使用时间戳相减
var diffTime = Math.round(
Math.abs(time1.getTime() - time2.getTime()) / 1000
);
//换算天
var day = parseInt(diffTime / (60 * 60 * 24));
//换算小时
var hours = parseInt((diffTime % (60 * 60 * 24)) / (60 * 60));
//换算分
var minutes = parseInt((diffTime % (60 * 60)) / 60);
//换算秒
var seconds = diffTime % 60;
return {
day: day,
hours: hours,
minutes: minutes,
seconds: seconds,
};
}