按返回日期数据显示刚刚,几分钟前/几点几分/今天/昨天/具体日期

需求

实现一个消息通知,类似微信聊天一样,按时间显示刚刚,一个小时前,今天xx,昨天。。。。

export const dateTimeFormat = date => {
  //  auto 0
  const autoZero = (n) => (String(n).length === 1 ? '0' : '') + n
  // string to timestamp
  const strToTimestamp = (str) => Date.parse(str.replace(/-/gi, '/'))
  let oriSecond = strToTimestamp(date) / 1000
  let curSecond = parseInt(new Date().getTime() / 1000)
  let diffSecond = curSecond - oriSecond

  let curDate = new Date(curSecond * 1000)
  let oriDate = new Date(oriSecond * 1000)

  let Y = oriDate.getFullYear()
  let m = oriDate.getMonth() + 1
  let d = oriDate.getDate()
  let H = oriDate.getHours()
 let i = oriDate.getMinutes()

 // just
  if (diffSecond < 60) {
    // within a minute
    return '刚刚'
  } else if (diffSecond < 3600) {
    // within an hour
    return `${Math.floor(diffSecond / 60)}分钟前`
  } else if (
    curDate.getFullYear() === Y &&
  curDate.getMonth() + 1 === m &&
  curDate.getDate() === d
  ) {
    return `今天${autoZero(H)}:${autoZero(i)}`
 }
 // yesterday
 let mewDate = new Date((curSecond - 86400) * 1000)
  if (mewDate.getFullYear() === Y && mewDate.getMonth() + 1 === m && mewDate.getDate() === d) {
    return `昨天${autoZero(H)}:${autoZero(i)}`
  } else if (curDate.getFullYear() === Y) {
    return `${autoZero(m)}${autoZero(d)}日`
  }
  return `${Y}${autoZero(m)}${autoZero(d)}日`
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值