if (!isNaN(Date.parse(time1)) && !isNaN(Date.parse(time2))) {
let t1 = Date.parse(time1);
let t2 = Date.parse(time2);
const num = t1 > t2 ? t1 - t2 : t2 - t1;
const miu = 1000 * 60 * 60 * 8;
const time = new Date(num - miu);
let Year = time.getFullYear() - 1970;
let Month = time.getMonth();
let day = time.getDate() - 1;
let Hour = time.getHours();
let Minutes = time.getMinutes();
let Second = time.getSeconds()
return { "time": num, Year, Month, day, Hour, Minutes, Second }
}
- Date.parse() :
parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。 - isNaN ()
如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。 - 两个时间 相减 可以获取相差的毫秒数
- 创建一个 new Date(0) 返回的时间是 1970-01-01 08:00:00 的时间
5, 减去8个小时的毫秒数, 得到 1970-01-01 00:00:00 的时间
6, 只要给Date 一个毫秒数,都会返回一个时间,在1970-01-01 08:00:00 的基础上
// 得到一个时间日期
const time = new Date(num - miu);
// 减去 1970 的到年
let Year = time.getFullYear() - 1970;
// 获取月份 0-11
let Month = time.getMonth();
// 减去 1 天,获取天数差
let day = time.getDate() - 1;
let Hour = time.getHours();
let Minutes = time.getMinutes();
let Second = time.getSeconds()
可以看到两个时间相差 的 年,月,日,时,分,秒
7.根据返回的值
if (dateDiff.done) {
if (dateDiff.time < 31536000000) {
if (dateDiff.time < 2592000000) {
if (dateDiff.time < 86400000) {
if (dateDiff.time < 360000) {
if (dateDiff.time < 60000) {
if (dateDiff.time < 10000) {
return `刚刚`
}
return `${dateDiff.Second}秒之前`
}
return `${dateDiff.Minutes}分钟之前`
}
return `${dateDiff.Hour}小时之前`
}
return `${dateDiff.day}天之前`
}
return `${dateDiff.Month}个月之前`
}
return `${dateDiff.Year}年之前`
}
return '错误类型'