- 感谢 csdn 提供平台
效果图
<script>
// 时间搓是以 毫秒 为单位
// 一秒等于 1000 毫秒 ( 以此内推 )
var UNITS = {
'年': 31557600000, // 63158623743
'月': 2629800000,
'天': 86400000,
'小时': 3600000,
'分钟': 60000,
'秒': 1000
}
// 年 - 月 - 日 时 : 分 : 秒 ( 函数方法 )
function formatTimestamp(time) {
// T表示分隔符,Z表示的是UTC。
// UTC:世界标准时间,在标准时间上加上8小时,即东八区时间,也就是北京时间。
var date = new Date(time + 8 * 3600 * 1000);
console.log(date.toJSON()) // 2020-10-10T12:00:00.000Z
return date.toJSON().substr(0, 19).replace('T', ' '); // 返回 2020-10-10 12:00:00 格式
}
// 刚刚 ; ..秒前 ; ..分钟前; ..小时前 ; ..天前 ; ( 函数方法 )
function humanize(milliseconds) {
var humanize = '';
// 遍历 UNITS 对象
for (var key in UNITS) {
// 如果时间差大于或者等于 UNITS[ key ]
if (milliseconds >= UNITS[key]) {
// 用时间差 / 符合条件的 UNITS[key] 求出值 + 当前的 key(单位) + 前
humanize = Math.floor(milliseconds / UNITS[key]) + key + '前';
// 结束循环
break;
}
}
// 返回需要显示的值
return humanize || '刚刚';
}
// 当前时间减去传入时间 ( 函数方法 )
function format(timestamp) {
// 得到当前时间与传入时间的差
var diff = Date.now() - timestamp
// 这里 UNITS[ key ] , key 可以设置成 UNITS 任何一项 key (我这里设置成 “ 天 ” 是业务需求)
if (diff < UNITS['天']) {
// 如果当前时间减去传入时间少于 86400000 , 调用 humanize 方法
return humanize(diff)
}
// 如果当前时间减去传入时间大于 86400000 , 调用 formatTimestamp 方法
return formatTimestamp(timestamp)
}
var str = format(1615535559887)
console.log(str,'显示');
</script>