获取两个时间节点之间相差 xx 天 xx 小时 xx 分钟 xx 秒钟
思路
1. 准备两个时间对象
2. 两个时间对象相减(可以,但有兼容问题, IE版本不好使)
-> 得到:就是两个时间对象时间戳的差值
-> 为了兼容,获取两个时间节点的时间戳,相减
-> 相减之后取一个绝对值,就不需要考虑谁大谁小
-> 结果是 毫秒ms, 最好 /1000 以后在取整
3. 换算
-> 换算天:diffTime / 一天的秒数, 取整
-> 换算小时:diffTime % 一天的秒数 / 一小时的秒数, 取整
-> 换算分钟:diffTime % 一小时的秒数 / 一分钟的秒数, 取整
4. 封装为函数
-> 准备一个函数, 接收两个时间对象
-> 在函数内部计算时间差
-> 返回结果(为了后续使用并且方便调用,字符串、数组、对象选择返回一个对象)
开始操作
1、准备两个时间对象
var time1 = new Date()
// 月份是数字的时候, 0 代表 1 月, 11 代表 12 月
var time2 = new Date(2022 , 2 , 18 , 10 , 24 , 00)
2、使用时间戳相减
// Math.abs()函数返回一个数字的绝对值
var diffTime = Math.round(Math.abs(time1.getTime() = time2.getTime()) / 1000)
console.log(diffTime)
3、换算
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 = parseInt(diffTime % 60)
console.log(`距离time2还有 ${day} 天 ${hours} 小时 ${minutes} 分钟 ${seconds} 秒钟`)
4、准备函数
/**
* 获取时间差。
* @param {TIME} time1 时间节点1
* @param {TIME} time2 时间节点2
* @return { Object } 以对象形式返回
*/
function getTimeDifference(time1, time2){
// 计算时间差
// Math.round(): 用来取整
// Math.abs(): 用来取绝对值
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 = parseInt(diffTime % 60)
// 返回
// 按照字符串返回,不够灵活
// 按照数组返回,指向性不够明确
// 按照对象返回, 数据足够灵活,指向性足够明确
return {
day : day,
hours : hours,
minutes : minutes,
seconds : seconds
}
}