Date類型使用自UTC
(Coordinated Universal Time,國際協調時間)1970 年1 月1 日午夜(零時)開始通過的毫秒數來保存日期。在使用這種數據存儲格式的條件下,Date 類型保存的日期可以精確到1970 年1月1 日以前或以後的285 616 年。javascript
要建立一個日期對象,使用new 操做符和Date 構造函數便可java
var date = new Date();
Date構造函數在不傳入參數時返回的是當前的時間對象,若是想獲得一個指定日期的對象,須要在Date構造函數中傳入表示該日期日期的毫秒數(即從UTC 時間1970 年1 月1 日午夜起至該日期止通過的毫秒數).爲了簡化這一計算過程,ECMAScript 提供了兩個方法:Date.parse()
和Date.UTC()
。瀏覽器
Date.parse()
方法接收一個表示日期的字符串參數,而後嘗試根據這個字符串返回相應日期的毫秒數。ECMA-262 沒有定義Date.parse()應該支持哪一種日期格式,所以這個方法的行爲因實現而異,並且一般是因地區而異函數
var date = new Date(Date.parse('Wed Nov 18 2015 17:06:21 GMT+0800')); //傳入的是中國區域日期字符串格式 var date = new Date('Wed Nov 18 2015 17:06:21 GMT+0800'); //這種方式也是正確的,解析器會自動進行轉換
Date.UTC()
方法一樣也返回表示日期的毫秒數,但它與Date.parse()在構建值時使用不一樣的信息。Date.UTC()的參數分別是年份、基於0 的月份(一月是0,二月是1,以此類推)、月中的哪一天(1 到31)、小時數(0 到23)、分鐘、秒以及毫秒數。在這些參數中,只有前兩個參數(年和月)是必需的。若是沒有提供月中的天數,則假設天數爲1;若是省略其餘參數,則通通假設爲0測試
// GMT 時間2000 年1 月1 日午夜零時 var y2k = new Date(Date.UTC(2000, 0)); var y2k1 = new Date(2000, 0); // GMT 時間2005 年5 月5 日下午5:55:55 var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55)); var allFives = new Date(2005, 4, 5, 17, 55, 55);
與其餘引用類型同樣,Date
類型也重寫了toLocaleString()
、toString()
和valueOf()
方法;但這些方法返回的值與其餘類型中的方法不一樣。Date 類型的toLocaleString()
方法會按照與瀏覽器設置的地區相適應的格式返回日期和時間。這大體意味着時間格式中會包含AM 或PM,但不會包含時區信息(固然,具體的格式會因瀏覽器而異)。而toString()
方法則一般返回帶有時區信息的日期和時間,其中時間通常以軍用時間(即小時的範圍是0 到23)表示,不一樣瀏覽器輸出的字符各有差別,這個本身能夠測試一下.valueOf()
則返回表示日期的毫秒數.spa
var date1 = new Date(2007, 0, 1); //"January 1, 2007" var date2 = new Date(2007, 1, 1); //"February 1, 2007" alert(date1 < date2); //true alert(date1 > date2); //false
toDateString()——以特定於實現的格式顯示星期幾、月、日和年;code
toTimeString()——以特定於實現的格式顯示時、分、秒和時區;對象
toLocaleDateString()——以特定於地區的格式顯示星期幾、月、日和年;繼承
toLocaleTimeString()——以特定於實現的格式顯示時、分、秒;ip
toUTCString()——以特定於實現的格式完整的UTC 日期。
到目前爲止,剩下還未介紹的Date
類型的方法(以下表所示),都是直接取得和設置日期值中特定部分的方法了。須要注意的是,UTC 日期指的是在沒有時區誤差的狀況下(將日期轉換爲GMT 時間)的日期值。