0
点赞
收藏
分享

微信扫一扫

JS获取,封装时间差

杰森wang 2022-04-14 阅读 95
javascript

获取时间差

思路:

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,
};
}
举报

相关推荐

0 条评论