moment关于时间的总结

139 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情

moment数据,时间戳,和常用时间的相互转换

1 、moment数据-->时间戳

valueOf()方法  同Date对象一样,如果获得的momen数据只需要调用valueOf即可

举例let data= item.valueOf()

2、moment数据-->正常格式数据

  用format()

 举例let data=moment(item).format('YYYY-MM-DD')

3、时间戳-->moment数据

直接调用即可

举例:let data=moment(1568712361000)

4、时间戳-->正常格式数据

let data=moment(1568712361000).format('YYYY-MM-DD')

5、正常数据格式->moment数据

let data=momet('2020-12-09')

6、正常数据格式->时间戳

`let data=momet('2020-12-09').valueOf()

let data=new Data(2020,11,9).getTime()`

常用获取最近的时间

1 获取近一年的时间

let data=[new Date().getTime()-365*24*3600*1000,new Date().getTime()]

2 获取去年的数据

  (1)先获取当年年份

const nowYear = tempTime.getFullYear()

(2)获取去年元旦和今年元旦时间戳

const day = new Date(nowYear, 0, 1).getTime() const nextDay = new Date(nowYear - 1, 0, 1).getTime()

  (3) let data=[daty,nextDay()]
如果可以用moment

const dayAgo=new Date().getTime()-dayCount*24*3600*1000
let data=moment(dayAgo).format('YYYY-MM-DD')

如果不用moment纯原生的话可以这样写

 getDay (day) {
      // 获取今天日期
      const today = new Date()
      // 获取距离目标时间多少ms 通过时间戳来进行定位比较准确
      const targetdayMilliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day
      today.setTime(targetdayMilliseconds)
      const tYear = today.getFullYear()
      let tMonth = today.getMonth()
      let tDate = today.getDate()
      tMonth = this.doHandleMonth(tMonth + 1)
      tDate = this.doHandleMonth(tDate)
      return tYear + '-' + tMonth + '-' + tDate
    },
    doHandleMonth (month) {
      let m = month
      if (month.toString().length === 1) {
        m = '0' + month
      }
      return m
    }
  

如果获取这时间区间内的每一天的数组

let dayRange=[]
for (var i = -89; i <= 0; i++) {
        dayRange.push(getDay(i))
        
      }

如果接下来获取这段时间内的每个小时的时间话

let dayHourRange=[]
for (var i = -89; i <= 0; i++) {
        for (var j = 0; j < 24; j++) {
          dayHourRange.push(`${this.getDay(i)} ${j < 10 ? '0' + j : j}:00:00`)
        }
        
      }

还有注意moment使用想要获取时间戳时unix 和valueOf的区别,否则可能转换后的时间会出问题