詳解日期(Date)引用類型

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

日期格式化方法

  1. toDateString()——以特定於實現的格式顯示星期幾、月、日和年;code

  2. toTimeString()——以特定於實現的格式顯示時、分、秒和時區;對象

  3. toLocaleDateString()——以特定於地區的格式顯示星期幾、月、日和年;繼承

  4. toLocaleTimeString()——以特定於實現的格式顯示時、分、秒;ip

  5. toUTCString()——以特定於實現的格式完整的UTC 日期。

日期/時間組件方法

到目前爲止,剩下還未介紹的Date 類型的方法(以下表所示),都是直接取得和設置日期值中特定部分的方法了。須要注意的是,UTC 日期指的是在沒有時區誤差的狀況下(將日期轉換爲GMT 時間)的日期值。

日期/時間組件方法

相關文章
相關標籤/搜索