前两天写了一篇《常见的Javascript获取时间戳》,今天来一篇续集吧,日期和时间戳的互转前端
2018-08-08
这种形式的,可是在拉取后端数据时,通常要把时间转化成时间戳再传过去。一样的道理要会把时间戳转化成咱们想要的日期格式。一般咱们用到的时间格式分两种2018/08/09 10:10:10或者2018-08-09 10:10:10,幸运的是js的Date对象很好的支持了这种格式的时间,一般咱们能够经过segmentfault
new Date('2018/08/09 10:10:10').getTime()或者 new Date('2018-08-09 10:10:10').getTime()来获取到时间戳
可是!!!!
ie对于第二种不支持
以下图:后端
所以,请采用如下的代码函数
let time = '2018-08-09 10:10:10' time = time.replace(/-/g, '/') // 把全部-转化成/ let timestamp = new Date(time).getTime()
这里要用到Date对象的一系列get方法,思路是先根据时间戳new一个Date对象,而后经过一系列get方法分别拿到年月日时分秒,再拼接字符串。spa
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)
有几个小点须要注意code
2018-08-09 10:10:10
=> 2018/08/09 10:10:10
)2018-8-9 08:09:05
要比 2018-8-9 8:9:5
好看的多。