发布后的前120秒,都显示1分钟前;例如:1分钟前
120秒到1小时内,都显示n分钟前; 例如:2分钟前,3分钟前 … 58分钟前,59分钟前
1小时到24小时内,都显示n小时前;例如:小时前,2小时前 … 23小时前,24小时前
大于24小时又小于48小时的情况需要判断,这个时间段是否属于昨天的范畴还是前天的范畴; 属于昨天就显示“昨天”,属于前天就显示前天;例如:昨天,前天
大于48小时后直接统计显示当前日期,例如:1月1日,1月2日 … 2月27日,2月28日
超过当年显示n年n月n日,例如:2019年11月20日,2019年11月21日 … 2019年12月30日,2019年12月31日
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/**
* 参数 diffValue 时间戳
* 发布后的前120秒,都显示1分钟前;例如:1分钟前
120秒到1小时内,都显示n分钟前; 例如:2分钟前,3分钟前 ...... 58分钟前,59分钟前
1小时到24小时内,都显示n小时前;例如:小时前,2小时前 ...... 23小时前,24小时前
大于24小时又小于48小时的情况需要判断,这个时间段是否属于昨天的范畴还是前天的范畴; 属于昨天就显示“昨天”,属于前天就显示前天;例如:昨天,前天
大于48小时后直接统计显示当前日期,例如:1月1日,1月2日 ...... 2月27日,2月28日
超过当年显示n年n月n日,例如:2019年11月20日,2019年11月21日 ...... 2019年12月30日,2019年12月31日
*/
// applyDate: "2021-03-03 10:24"
// let dayTime = '2021-03-03 10:24' // 年
// let dayTime = '2022-05-15 10:24' // 年
let dayTime = '2022-05-16 20:47' // 年
let timeVal = new Date(dayTime.replace(/-/g, "/")).getTime();
//时间戳时间格式化(毫秒)
function dates(timeStamp) {
let second = 1000;
let minute = second * 60;
let hour = minute * 60;
let day = hour * 24;
let month = day * 30;
let now = new Date().getTime();
let nowHouer = new Date().getHours() // 当前时间的小时值
let diffValue = now - timeStamp;
let monthC = diffValue / month; //月
let weekC = diffValue / (7 * day); //周
let dayC = diffValue / day; //天
let hourC = diffValue / hour; //时
let minC = diffValue / minute; //分
let secC = diffValue / second; //秒
if (monthC >= 12) {
let data = new Date(parseInt(timeStamp));
let year = data.getFullYear();
let month = data.getMonth() + 1;
let days = data.getDate() < 10 ? '0' + data.getDate() : '' + data.getDate();
return `${year}年${month}月${days}日`
}
if(hourC > 48){
let data = new Date(parseInt(timeStamp));
let year = data.getFullYear();
let month = data.getMonth() + 1;
let days = data.getDate() < 10 ? '0' + data.getDate() : '' + data.getDate();
return `${month}月${days}日`
}
if(hourC > 24 && hourC <= 48){
return (hourC - nowHouer) / 24 > 1 ? '前天' : '昨天'
}
if(hourC >= 1 && hourC <= 24){
return `${parseInt(hourC)}小时前`
}
if(minC >= 2 && hourC < 1){
return `${parseInt(minC)}分钟前`
}
if(minC < 2){
return "1分钟前"
}
}
console.log(dates(timeVal))
</script>
</body>
</html>