写在前面
前两天写了一篇《罕见的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关于第二种不支撑
如下图:
因而,请采纳以下的代码
let time = '2018-08-09 10:10:10'
time = time.replace(/-/g, '/') // 把一切-转化成/
let timestamp = new Date(time).getTime()
时候戳 -> 时候 (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)
总结
有几个小点须要注重
- 为了兼容,将横线换成斜杠(
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
悦目的多。