/**
* 计算时间差
* @param publishTimeStamp 时间戳(格式:13位数字)
* @param nowTimeStamp 当前时间戳(传空使用当前时间)
*/
废话不多说,直接上代码
Vue.filter('timeDiff', function (publishTimeStamp, nowTimeStamp) {
if (!publishTimeStamp) {
return '';
}
if (nowTimeStamp ===undefined) {
nowTimeStamp =new Date().getTime();
}
// 发布时间解析
let pubTimeObj =analyseDate(publishTimeStamp, true),
pubYear = pubTimeObj.year,
pubMonth = pubTimeObj.month,
pubDate = pubTimeObj.date,
pubHour = pubTimeObj.hour,
pubMin = pubTimeObj.minute;
// 今天时间解析
let todayTimeObj =analyseDate(nowTimeStamp, true),
todayYear = todayTimeObj.year, // 暂存,避免重复计算
todayMN =new Date(`${todayTimeObj.year}/${todayTimeObj.month}/${todayTimeObj.date}`); // 今日零点
// 昨天时间解析
let yesterdayTimeObj =analyseDate(nowTimeStamp -86400000, true),
yesterdayMN =new Date(`${yesterdayTimeObj.year}/${yesterdayTimeObj.month}/${yesterdayTimeObj.date}`); // 昨日零点
// 今年时间分析
let thisYearMN =new Date(`${todayYear}/01/01`); // 昨日零点
if (nowTimeStamp - publishTimeStamp <60000) {// 一分钟内,显示“刚刚”
return '刚刚';
}else if (nowTimeStamp - publishTimeStamp <3600000) {// 一小时内,显示“xx分钟前”
return `${parseInt((nowTimeStamp - publishTimeStamp) /60000)}分钟前`;
}else if (publishTimeStamp > todayMN) {// 今天内,显示“15:30”
return `${pubHour}:${pubMin}`;
}else if (publishTimeStamp > yesterdayMN) {// 昨天,显示“昨天 15:30”
return `昨天 ${pubHour}:${pubMin}`;
}else if (publishTimeStamp > thisYearMN) {// 当年,显示“03-07 15:30”
return `${pubMonth}-${pubDate} ${pubHour}:${pubMin}`;
}else {// 去年之前,显示“2017-12-12 15:30”
return `${pubYear}-${pubMonth}-${pubDate} ${pubHour}:${pubMin}`;
}
});
网友评论