需求
需要对后台传进来的时间戳做格式化处理,类似Java的SimpleDateFormat。
结论
暂时没发现有系统方法支持这种操作,这里建议大家根据需要展示的格式自己定制。
核心就这几个方法,组合也非常灵活。
//获取年
new Date().getFullYear()
//获取月
new Date().getMonth() + 1
//获取天
new Date().getDate()
//获取小时
new Date().getHours()
//获取分钟
new Date().getMinutes()
解决方案
//timeStamp 毫秒级时间戳
function getTimeStrByStamp(timeStamp) {
let nowTime = new Date()
let tranTime = new Date(timeStamp)
let chaTime = nowTime.getTime() - tranTime.getTime();
let tempValue = 0;
let distanceTimeStr = "刚刚"
if (chaTime < 60000) {
distanceTimeStr = "刚刚";
} else if (chaTime < 3600000) {
//小时内 用分钟
if (chaTime < 60000) {
distanceTimeStr = "1分钟前";
} else {
tempValue = parseInt(chaTime / 60000);
distanceTimeStr = tempValue + "分钟前";
}
} else if (chaTime < 86400000) {
//1天内 用小时
if (chaTime < 3600000) {
distanceTimeStr = "1小时前";
} else {
tempValue =parseInt(chaTime / 3600000);
distanceTimeStr = tempValue+ "小时前";
}
} else if (chaTime < 172800000) {
//2天内
distanceTimeStr = "昨天 " + tranTime.getHours()+':'+tranTime.getMinutes();
} else if (chaTime < 259200000) {
//3天内
distanceTimeStr = "前天 " + tranTime.getHours()+':'+tranTime.getMinutes();
} else if (chaTime - 31536299594 < 0) {
//一年内
distanceTimeStr = (tranTime.getMonth()+ 1)+'-'+tranTime.getDate()+' '+ tranTime.getHours()+':'+tranTime.getMinutes()
} else {
distanceTimeStr = tranTime.getFullYear()+'-'+ (tranTime.getMonth()+ 1)+':'+'-'+tranTime.getDate();
}
return distanceTimeStr;
}
module.exports = {
getTimeStrByStamp,
}