|
@@ -59,3 +59,61 @@ export function dateFormatter(date = '', fmt = 'yyyy-MM-dd HH:mm:ss') {
|
|
|
}
|
|
|
return fmt
|
|
|
}
|
|
|
+
|
|
|
+// 时间戳转换 多少秒、多少分、多少小时前、多少天前 超出10天显示年月日
|
|
|
+// 传入一个时间戳
|
|
|
+export function dateFromNow(originTime, useOld = false) {
|
|
|
+ if (!originTime) return
|
|
|
+ // 原始时间 - 传入的时间戳
|
|
|
+ const originTimeStamp = +new Date(originTime)
|
|
|
+ // 当前时间戳
|
|
|
+ const nowTimeStamp = +new Date()
|
|
|
+ // 时间戳相差多少
|
|
|
+ const diffTimeStamp = nowTimeStamp - originTimeStamp
|
|
|
+
|
|
|
+ const postfix = diffTimeStamp > 0 ? '前' : '后'
|
|
|
+ // 求绝对值 ms(毫秒)
|
|
|
+ const diffTimeStampAbsMs = Math.abs(diffTimeStamp)
|
|
|
+ const diffTimeStampAbsS = Math.round(diffTimeStampAbsMs / 1000)
|
|
|
+
|
|
|
+ // 10天的秒数
|
|
|
+ const days11 = 11 * 24 * 60 * 60
|
|
|
+
|
|
|
+ const dataMap = {
|
|
|
+ zh: ['天', '小时', '分钟', '秒'],
|
|
|
+ number: [24 * 60 * 60, 60 * 60, 60, 1]
|
|
|
+ }
|
|
|
+
|
|
|
+ let timeString = ''
|
|
|
+ // 10天前
|
|
|
+ const tenDaysAgo = diffTimeStampAbsS > days11
|
|
|
+ // 是否是当天
|
|
|
+ const isCurrentDay =
|
|
|
+ dateFormatter(originTimeStamp, 'yyyy.MM.dd') ===
|
|
|
+ dateFormatter(nowTimeStamp, 'yyyy.MM.dd')
|
|
|
+
|
|
|
+ let condition = !isCurrentDay
|
|
|
+ if (useOld) {
|
|
|
+ condition = tenDaysAgo
|
|
|
+ }
|
|
|
+
|
|
|
+ if (condition) {
|
|
|
+ // 不是当天,则使用正常日期显示
|
|
|
+ const originDate = new Date(originTimeStamp)
|
|
|
+ const nowDate = new Date()
|
|
|
+ // 是否同年
|
|
|
+ const sameYear = originDate.getFullYear() === nowDate.getFullYear()
|
|
|
+ // 如果是当年,则不显示年
|
|
|
+ const patternString = sameYear ? 'MM-dd' : 'yyyy-MM-dd'
|
|
|
+ timeString = dateFormatter(originDate, patternString)
|
|
|
+ } else {
|
|
|
+ for (let i = 0; i < dataMap.number.length; i++) {
|
|
|
+ const inm = Math.floor(diffTimeStampAbsS / dataMap.number[i])
|
|
|
+ if (inm !== 0) {
|
|
|
+ timeString = inm + dataMap.zh[i] + postfix
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return timeString
|
|
|
+}
|