![](https://img.haomeiwen.com/i15359269/a8a735f0b7cdf1df.png)
规则(与当前时间相比较) | 格式 |
---|---|
小于1分钟 | 刚刚 |
小于1小时 | xx分钟前 |
今天以内 | 今天 HH:mm |
昨天以内 | 昨天 HH:mm |
当月 | dd日 HH:mm |
当年 | MM月dd日 HH:mm |
默认 | yyyy年MM月dd日 HH:mm |
直接上代码
//日期格式
const FORMAT = {
DATE_FORMAT: 'yyyy年MM月dd日 HH:mm',
MONTH_FORMAT: 'MM月dd日 HH:mm',
DAY_FORMAT: 'dd日 HH:mm',
TIME_FORMAT: 'HH:mm:ss',
DATETIME_FORMAT: 'yyyy-MM-dd HH:mm:ss',
TODAY_FORMAT: '今天 HH:mm',
YESTERDAY_FORMAT: '昨天 HH:mm'
};
module.exports = {
/**
*
* 自动计算时间格式
* @param timeStr 日期字符串
*/
autoFormat(timeStr) {
//解析日期字符串
var longTime = Date.parse(timeStr);
if (isNaN(longTime)) {
return "日期格式错误";
}
var date = new Date(longTime);
//返回值时间字符串
var dataStr;
//传入时间时间戳
var milliseconds = date.getTime();
//当前时间戳
var nowMilliseconds = new Date().getTime();
var now = new Date();
//今天凌晨时间戳
now.setHours(0, 0, 0, 0);
var nowMs = now.getTime();
//当月月初时间戳
now.setDate(1);
var monthMs = now.getTime();
//今年年初时间戳
now.setMonth(1, 1);
var yearMs = now.getTime();
//昨天凌晨时间戳
var yesterdayMs = new Date(nowMs - 86400000).getTime();
//相差毫秒数
var num = nowMilliseconds - milliseconds;
switch (true) {
//小于0
case num<0:{
dataStr = "日期错误";
break;
}
//小于一分钟
case num<60000:{
dataStr = "刚刚";
break;
}
//小于一小时
case num<3600000:{
var minutes = parseInt(num / 60000);
dataStr = minutes+"分钟前";
break;
}
//今天以内
case milliseconds > nowMs: {
dataStr = this.dateFormat(date, FORMAT.TODAY_FORMAT);
break;
}
//昨天以内
case milliseconds > yesterdayMs: {
dataStr = this.dateFormat(date, FORMAT.YESTERDAY_FORMAT);
break;
}
//当月以内
case milliseconds > monthMs: {
dataStr = this.dateFormat(date, FORMAT.DAY_FORMAT);
break;
}
//当年以内
case milliseconds > yearMs: {
dataStr = this.dateFormat(date, FORMAT.MONTH_FORMAT);
break;
}
default:{
dataStr = this.dateFormat(date, FORMAT.DATE_FORMAT);
}
}
return dataStr;
},
/**
* 日期格式化
* @param date Date对象
* @param format 目标日期格式
* @returns {*}
*/
dateFormat(date,format){
// 获取完整的年份(4位,1970)
var year = date.getFullYear();
// 获取月份(0-11,0代表1月)
var month = date.getMonth() < 9 ? '0' + (date.getMonth()+1) : date.getMonth()+1;
// 获取日(1-31)
var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
// 获取小时数(0-23)
var hours = date.getHours()< 10 ? '0' + date.getHours() : date.getHours();
// 获取分钟数(0-59)
var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
// 获取秒数(0-59)
var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
format = format.replace(/yyyy/g, year);
format = format.replace(/MM/g, month);
format = format.replace(/dd/g, day);
format = format.replace(/HH/g, hours);
format = format.replace(/mm/g, minutes);
format = format.replace(/ss/g, seconds);
return format;
}
};
网友评论