计算传入的时间戳和当前时间相差了多久
某些时候我们需要展示某个时间点相差当前时刻多久,例如“一天前”,“一个月前”等。
1/**
2 * 计算传入的时间戳和当前时间相差了多久
3 * @param {Number} timestamp [时间戳]
4 */
5export function getTimeDiff (timestamp) {
6 // 如果精确到毫秒,时间戳是 13 位数字
7 // 这里按照秒来计算,需要将毫秒转换为秒
8 if (timestamp > 1 * 10 ** 12) {
9 timestamp = timestamp / 1000
10 }
11
12 var currentStamptime = Date.parse(new Date()) / 1000
13 var agoAt = '刚刚'
14 var diff = currentStamptime - timestamp
15 var points = [
16 { value: 365 * 24 * 60 * 60, suffix: '年前', max: 2 },
17 { value: 30 * 24 * 60 * 60, suffix: '月前', max: 11 },
18 { value: 7 * 24 * 60 * 60, suffix: '周前', max: 4 },
19 { value: 24 * 60 * 60, suffix: '天前', max: 6 },
20 { value: 60 * 60, suffix: '小时前', max: 23 },
21 { value: 10 * 60, suffix: '0分钟前', max: 5 }
22 ]
23
24 for (var i = 0; i < points.length; i++) {
25 var item = points[i]
26 var mode = Math.floor(diff / item.value)
27 if (mode >= 1) {
28 agoAt = Math.min(mode, item.max) + item.suffix
29 break
30 }
31 }
32 return agoAt
33}