近段時間,由於某種原因我一直在研究js不同地區不同時區之間的時間換算。北京時間早上9點,在其他地區可能已經是夜晚了。
我們都知道,國內統一使用的都是北京時間,但在國外,不僅因時區不同而有時間差異,同一地區還存在夏令時冬令時的時間差異,如果程序上涉及時間上的計算,要千萬小心了。
一、new Date的基本使用
-
直接使用
new Date()
:返回統設置的當前時間對象。 -
傳入參數爲時間戳,如
new Date(1453094034000)
:返回時間戳對應的時間對象。 -
傳入參數年月日時分秒,如
new Date(2019, 3, 2, 16, 37, 22)
:返回參數的對應日期的時間對象,時分秒不傳默認0時0分0秒。注意這裏的月份參數從0開始,傳入3即爲4月。 -
傳入參數爲時間字符串,如
new Date('Tue Apr 02 2019 16:39:08');
:返回當前系統設置的時間對應的改日期時間對象。 -
傳入參數爲某指定時區的字符串,如
new Date("2019-04-21 21:00:00 EDT")
: 返回參數中時區對應的時間轉換成當前系統設置的時區對應的時間對象,這也是我們在使用js進行時區換算經常用到的方法。 -
以下格式也可以正確解析:
new Date('4-21-2019 21:00:00 EST') new Date("2019/04/21 21:00:00 EDT") new Date("2019/04/21 9:00 PM EDT") new Date('4/21/2019 9:00 PM EST') new Date('2019-04-21T21:00:00') new Date("Apr 21, 2019 9:00:00"); new Date("April 21, 2019 9:00:00"); new Date(95, 3, 21) //兩位數年份表示 1900 - 1999 年
注意:new Date()參數中不含時區時默認爲當前系統設置的的時區
二、使用new Date進行時區轉換
-
將某一指定時區的時間轉換成UTC時間
var date = new Date("2019-04-21 21:00:00 EDT"); //不指定時區默認爲當前系統設置的時區 var utcDate = date.toUTCString(); console.log(utcDate); // "Mon, 22 Apr 2019 01:00:00 GMT" // 注意,這裏的utcDate是時間字符串,不能直接使用getFullYear()等方法
-
將某一指定時區的時間轉換成當前用戶所在時區對應的時間
new Date("2019-04-21 21:00:00 EDT");
-
將UTC時間轉換當前用戶所在時區對應的時間
new Date("2019-04-21 21:00:00 GMT"); // 或 new Date("2019-04-21 21:00:00 UTC");
三、常用的時間縮寫
- EST: 美國東部標準時間 ,GMT-5
- EDT: 美國東部夏令時時間 ,GMT-4
- CST:美國中部標準時間,GMT-6
- CDT:美國中部夏令時時間,GMT-5
- PST: (美國)太平洋標準時間,GMT-8
- PDT:(美國)太平洋夏令時時間,GMT-7
- GMT: 格林威治標準時間,即UTC時間
- CCT:北京時間(中國沿海時間),GMT+8
更多時區縮寫可參考http://www.cnblogs.com/tracy/archive/2010/07/16/1778566.html