计算传入的时间戳和当前时间相差了多久

某些时候我们需要展示某个时间点相差当前时刻多久,例如“一天前”,“一个月前”等。

 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}