罕见的javascript日期和时候戳互相转化

写在前面

前两天写了一篇《罕见的Javascript猎取时候戳》,本日来一篇续集吧,日期和时候戳的互转

准备学问

  • 晓得什么是时候戳:即间隔1970年01月01日00时00分00秒的毫秒数(假如你要用到的是秒,那也行,单元题目罢了)。
  • 晓得为何须要把日期转化成时候戳:关于前端来讲,打仗的到的时候多是2018-08-08这类情势的,然则在拉取后端数据时,平常要把时候转化成时候戳再传过去。一样的原理要会把时候戳转化成我们想要的日期花样。

时候 -> 时候戳 (2018/08/09 10:10:10 -> 1533780610000 )

一般我们用到的时候花样分两种2018/08/09 10:10:10或许2018-08-09 10:10:10,荣幸的是js的Date对象很好的支撑了这类花样的时候,一般我们能够经由过程

new Date('2018/08/09 10:10:10').getTime()或许
new Date('2018-08-09 10:10:10').getTime()来猎取到时候戳

然则!!!!
ie关于第二种不支撑
如下图:

《罕见的javascript日期和时候戳互相转化》

因而,请采纳以下的代码

let time = '2018-08-09 10:10:10'
time = time.replace(/-/g, '/') // 把一切-转化成/
let timestamp = new Date(time).getTime()  

《罕见的javascript日期和时候戳互相转化》

时候戳 -> 时候 (1533780610000 -> 2018/08/09 10:10:10)

这里要用到Date对象的一系列get要领,思绪是先依据时候戳new一个Date对象,然后经由过程一系列get要领离别拿到年月日时分秒,再拼接字符串。

function timestampToTime (timestamp) {
    const dateObj = new Date(+timestamp) // ps, 必需是数字范例,不能是字符串, +运算符把字符串转化为数字,更兼容
    const year = dateObj.getFullYear() // 猎取年,
    const month = dateObj.getMonth() + 1 // 猎取月,必须要加1,由于月份是从0最先盘算的
    const date = dateObj.getDate() // 猎取日,记得辨别getDay()要领是猎取礼拜几的。
    const hours = pad(dateObj.getHours())  // 猎取时, pad函数用来补0
    const minutes =  pad(dateObj.getMinutes()) // 猎取分
    const seconds =  pad(dateObj.getSeconds()) // 猎取秒
    return year + '-' + month + '-' + date + ' ' + hours + ':' + minutes + ':' + seconds
}

function pad(str) {
    return +str >= 10 ? str : '0' + str
}

timestampToTime(1533773345000)
timestampToTime(1533780610000)


《罕见的javascript日期和时候戳互相转化》

总结

有几个小点须要注重

  • 为了兼容,将横线换成斜杠(2018-08-09 10:10:10 => 2018/08/09 10:10:10)
  • 猎取月份时,要加1
  • getDate猎取日期,getDay是用来猎取是一个礼拜的第几天
  • 依据需求做恰当的补0,2018-8-9 08:09:05 要比 2018-8-9 8:9:5悦目的多。
    原文作者:温浪
    原文地址: https://segmentfault.com/a/1190000015944267
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞