目标:获取多久之前,如图
先来学习一下时间戳(从1970年1月1日0点开始到现在的毫秒值)的三种设置方式:
1.getTime()
let d1 = new Date()
console.log(d1.getTime()) //1628753493475
2.+new Date()
console.log(+new Date()) //1628753574643
3.Date.now()
console.log(Date.now()) //1628753668070
一.使用moment
Timeformate(time) {
// 因为moment包太大了,消耗内存,建议用原生写
moment.locale('zh-cn')
var start = moment(time)
var end = moment(new Date())
return end.to(start)
} // 2个月之前
二.使用原生(dateStr是2019-3-4 6:6:6的形式,直接粘贴使用即可,如果需要转换成时间戳的形式 使用 const dateStr = Date.parse(time))
function timeFormat(dateStr) {
var publishTime = Date.parse(dateStr) / 1000
var d_seconds
var d_minutes
var d_hours
var d_days
var d_months
var d_years
var timeNow = parseInt(new Date().getTime() / 1000)
var d
var date = new Date(publishTime * 1000)
var M = date.getMonth() + 1
var D = date.getDate()
var H = date.getHours()
var m = date.getMinutes()
var s = date.getSeconds()
// 小于10的在前面补0
if (M < 10) {
M = '0' + M
}
if (D < 10) {
D = '0' + D
}
if (H < 10) {
H = '0' + H
}
if (m < 10) {
m = '0' + m
}
if (s < 10) {
s = '0' + s
}
d = timeNow - publishTime
console.log()
d_years = parseInt(d / 31536000)
d_months = parseInt(d / 2592000)
d_days = parseInt(d / 86400)
d_hours = parseInt(d / 3600)
d_minutes = parseInt(d / 60)
d_seconds = parseInt(d)
if (d_days > 0 && d_days < 3) {
return d_days + '天前'
} else if (d_days <= 0 && d_hours > 0) {
return d_hours + '小时前'
} else if (d_hours <= 0 && d_minutes > 0) {
return d_minutes + '分钟前'
} else if (d_seconds < 60) {
if (d_seconds <= 0) {
return '刚刚'
} else {
return d_seconds + '秒前'
}
} else if (d_days >= 3 && d_days < 30) {
return d_days + '天前'
} else if (d_days >= 30 && d_days < 365) {
return d_months + '月前'
} else if (d_days >= 365) {
return d_years + '年前'
} else {
return dateStr
}
}
最后知道一下valueOf 与 Date.parse()的区别
(1)时间对象转换成时间戳用这两种都可以;
(2)如果只是时间字符串只能用Date.parse()来转换了,valueOf并不可以