前兩天寫了一篇《常見的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
好看的多。