原生代码写“XX之前“及用moment

目标:获取多久之前,如图

先来学习一下时间戳(从1970年1月1日0点开始到现在的毫秒值)的三种设置方式:

1.getTime()

let d1 = new Date()

console.log(d1.getTime())  //1628753493475

2.+new Date()

console.log(+new Date()) //1628753574643

3.Date.now()

console.log(Date.now()) //1628753668070

一.使用moment

    Timeformate(time) {
      // 因为moment包太大了,消耗内存,建议用原生写
      moment.locale('zh-cn')
      var start = moment(time)
      var end = moment(new Date())
      return end.to(start)
    }                                   // 2个月之前

二.使用原生(dateStr是2019-3-4 6:6:6的形式,直接粘贴使用即可,如果需要转换成时间戳的形式 使用 const dateStr = Date.parse(time))

function timeFormat(dateStr) {
  var publishTime = Date.parse(dateStr) / 1000
  var d_seconds
  var d_minutes
  var d_hours
  var d_days
  var d_months
  var d_years
  var timeNow = parseInt(new Date().getTime() / 1000)
  var d

  var date = new Date(publishTime * 1000)
  var M = date.getMonth() + 1
  var D = date.getDate()
  var H = date.getHours()
  var m = date.getMinutes()
  var s = date.getSeconds()
  // 小于10的在前面补0
  if (M < 10) {
    M = '0' + M
  }
  if (D < 10) {
    D = '0' + D
  }
  if (H < 10) {
    H = '0' + H
  }
  if (m < 10) {
    m = '0' + m
  }
  if (s < 10) {
    s = '0' + s
  }

  d = timeNow - publishTime
  console.log()
  d_years = parseInt(d / 31536000)
  d_months = parseInt(d / 2592000)
  d_days = parseInt(d / 86400)
  d_hours = parseInt(d / 3600)
  d_minutes = parseInt(d / 60)
  d_seconds = parseInt(d)

  if (d_days > 0 && d_days < 3) {
    return d_days + '天前'
  } else if (d_days <= 0 && d_hours > 0) {
    return d_hours + '小时前'
  } else if (d_hours <= 0 && d_minutes > 0) {
    return d_minutes + '分钟前'
  } else if (d_seconds < 60) {
    if (d_seconds <= 0) {
      return '刚刚'
    } else {
      return d_seconds + '秒前'
    }
  } else if (d_days >= 3 && d_days < 30) {
    return d_days + '天前'
  } else if (d_days >= 30 && d_days < 365) {
    return d_months + '月前'
  } else if (d_days >= 365) {
    return d_years + '年前'
  } else {
    return dateStr
  }
}

最后知道一下valueOf 与 Date.parse()的区别

(1)时间对象转换成时间戳用这两种都可以;

(2)如果只是时间字符串只能用Date.parse()来转换了,valueOf并不可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值