Date類型使用自UTC(國際協調時間)1970年1月1日午夜(0時)開始經過的毫秒數來保存日期。要創建一個日期對象,使用new操作符和Date構造函數即可:
var now = new Date();
在調用Date構造函數而不傳遞參數的情況下,新創建的對象自動獲得當前日期和時間。如果想根據特定的日期和時間創建時期對象,必須傳入表示該日期的毫秒數。為了簡化這一計算過程,javascript提供了兩個方法:Date.parse()和Date.UTC()。
其中,Date.parse()方法接收一個表示日期的字符串參數,然后嘗試根據這個字符串返回相應日期的毫秒數。ECMA-262沒有定義Date.parse()應該支持哪種日期格式,因此這個方法的行為因實現而異,而且通常是因地區而異。將地區設置為美國的瀏覽器通常都接受下列日期格式:
"月/日/年",如 6/13/2004
"英文月名 日,年",如January 12,2004
"英文星期幾 英文月名 日 年 時:分:秒 時區",如Tue May 25 2004 00:00:00 GMT-0700
例如,要為2004年5月25日創建一個日期對象,可以使用下面的代碼:
var someDate = new Date(Date.parse("May 25,2004"));
如果傳入Date.parse()方法的字符串不能表示日期,那么它會返回NaN。實際上,如果直接將表示日期的字符串傳遞給Date構造函數,也會在后臺調用Date.parse()。換句話說,下面的代碼與前面的例子是等價的:
var someDate = new Date("May 25,2004");
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));
//GMT時間2005年5月5日下午5:55:55
var allFives = new Date(Date.UTC(2005,4,5,17,55,55));
如同模仿Date.parse()一樣,Date構造函數也會模仿Date.UTC(),但有一點明顯不同:日期和時間都基于本地時區而非GMT來創建。不過,Date構造函數接收的參數仍然與Date.UTC()相同。因此,如果第一個參數是數值,Date構造函數就會假設該值是日期中的年份,而第二個參數是月份,以此類推:
//本地時間2000年1月1日午夜0時
var y2k = new Date(2000,0);
//本地時間2005年5月5日下午5:55:55
var allFives = new Date(2005,4,5,17,55,55);
更多信息請查看IT技術專欄