js 的Date 時間戳並沒有時區的概念 在任何時區 打印new Date(1) 顯示的都是相對時間 如下:
var t = new Date(1); t // Thu Jan 01 1970 08:00:00 GMT+0800 (中國標准時間)
//將電腦的時區 改為UTC+02:00 大馬士革 的時區在同樣在控制台執行
var k = new Date(1); k //Thu Jan 01 1970 02:00:00 GMT+0200 (東歐標准時間)
所以我們在做項目時 往往會將當地時間轉化為零時區時間,若是時間字符串需要差值一個時區的時間 ;但是若是時間戳,直接將時間字符串放入new Date()中就可以了 ;同樣的 若傳遞過來的是時間戳 想想顯示當地時間 也不需要做任何轉化
//傳入的是本地時區的時間字符串 轉化為0時區的時間戳(部分時區 時間戳哪個時區的都一樣) function covertUTCnTo0Time(str){ return new Date(str).getTime() } //傳入的是0時區的時間字符串 轉化為本地時間字符串 經過new Date().getTime() 轉化為時間戳了 ,就不需要手動的在增減時區的時間了 function covert0TimeToUTC(str){ var stamp = new Date(str).getTime() return dateFormat(new Date(stamp),'yyyy-MM-dd hh:mm:ss') } //dateFormat 為自己寫的一個時間轉化函數
否則時間會有一個時區的差距