一、時間戳
簡單講,unix時間戳就是從1970-01-01開始所經過的秒數,什么時候獲取時間戳,就是到那個時間點所經歷的秒數。
二、JavaScript獲取時間戳
根據時間戳的定義,可以使用javascript中的幾個方法來獲取系統當前的時間戳:
1、getTime()
w3c school的解釋如下:
根據上面的定義,我們可以獲取系統當前的時間戳:
var timeStamp1 = new Date().getTime(); console.info(timeStamp1);
輸出:1524662952173
2、parse()
根據上面的解釋,parse方法返回的是指定日期和時間到1970年1月1日的毫秒數,所以只要將日期指定為系統當前時間,就能獲取系統當前的時間戳。
var timeStamp2 = Date.parse(new Date()); console.info(timeStamp2);
輸出:1524662952000
3、valueOf()
該方法返回的是Date對象的原始值,且和getTime返回相同的值,所以只要Date對象為系統當前時間,就能獲取系統當前的時間戳
var timeStamp3 = (new Date()).valueOf(); console.info(timeStamp3);
輸出:1524662952176
以上是獲取系統當前時間的時間戳,如果要獲取指定時間的時間戳,只需要設置指定日期,然后用對應的日期對象進行操作即可,不再贅述。
從上面的結論可以看出,通過parse方法獲取的時間戳后三位都是0,如果用更多的數據測試,都會發現該方法返回的時間戳沒有其他兩種方法精確,
因為其后三位始終是0.
二、將時間戳轉化為日期
上面介紹的是獲取時間戳,也就是日期轉時間戳的方法,再來學習一下時間戳轉日期的方法。
轉成日期的方法也很簡單,只要將時間戳傳給Date即可,然后格式化成想要的格式,如YYYY-MM-DD hh:mm:ss
值得注意的一點是,在轉日期之前要先判斷時間戳是否是13位,如果不是13位,需要將不夠的幾位在低位用0代替,
例如:時間戳是1234567891 則在傳給Date()之前要轉成1234567891000
/** * 將unix時間戳轉化成日期格式 */ function timestamp2date(timestamp){ var date = new Date(timestamp); var strLen = timestamp.toString().length; //判斷時間戳是否不足13位,不足時低位補0,即乘以10的所差位數次方 if( strLen < 13){ var sub = 13 - strLen; sub = Math.pow(10,sub);//計算10的n次方 date = new Date(timestamp*sub); } var y = date.getFullYear()+'-'; var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; var d = date.getDate() + ' '; var h = date.getHours() + ':'; var m = date.getMinutes() + ':'; var s = date.getSeconds(); return y+M+d+h+m+s; } var ts = timestamp2date(1234567891); console.info(ts);
輸出結果:2009-02-14 7:31:31 var ts = timestamp2date(1234567891000); console.info(ts);
輸出結果:2009-02-14 7:31:31
為了驗證上面的結論,將補0部分去掉,結果如下:
/** * 將unix時間戳轉化成日期格式 */ function timestamp2date(timestamp){ var date = new Date(timestamp); var strLen = timestamp.toString().length; //判斷時間戳是否不足13位,不足時低位補0,即乘以10的所差位數次方 /* if( strLen < 13){ var sub = 13 - strLen; sub = Math.pow(10,sub);//計算10的n次方 date = new Date(timestamp*sub); } */ var y = date.getFullYear()+'-'; var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; var d = date.getDate() + ' '; var h = date.getHours() + ':'; var m = date.getMinutes() + ':'; var s = date.getSeconds(); return y+M+d+h+m+s; } var ts = timestamp2date(1234567891); console.info(ts);
輸出結果:1970-01-15 14:56:7 var ts = timestamp2date(1234567891000); console.info(ts);
輸出結果:2009-02-14 7:31:31
以上就是JavaScript中日期和時間戳的轉化,如有錯誤之處,感謝指正!