建立 Date 物件的語法:
//value-毫秒:代表自世界協調時1970年1月1日00:00:00開始的數值。
new Date(value);
//dateString-日期字串:表示日期的字串值。此字串應該是在parse方法中識別的格式。
new Date(dateString);
//year-年:代表年份的整數值。為了避免2000年問題最好指定4位數的年份; 使用1998, 而不要用98
//month-月:代表月份的整數值從0(1月)到11(12月)
//day-日:代表一個月中的第幾天的整數值,從1開始
//hour-小時:代表一天中的小時數的整數值 (24小時制)
//minute-分鐘
//second-秒
//millisecond-毫秒
new Date(year, month, day [, hour, minute, second, millisecond]);
Date()
Date() 方法可傳回當天的日期和時間。
parse()
parse() 方法可解析一個日期時間字串,並傳回 1970/1/1 午夜距離該日期時間的毫秒數。
Date.parse(datestring)
參數datestring是必需的,表示日期和時間的字串。
注意,該方法是 Date 物件的靜態方法。一般採用 Date.parse() 的形式來調用,而不是透過 dateobject.parse() 呼叫該方法。
UTC()
UTC() 方法可依世界時傳回 1970 年 1 月 1 日 到指定日期的毫秒數。
Date.UTC(year, month, day, hours, minutes, seconds, ms)
參數year是必需的,表示年份的四位數字;month是必需的,表示月份的整數,介於0 ~ 11;day是可選的,表示日期的整數,介於1 ~ 31;hours是可選的,表示小時的整數,介於0 ~ 23;minutes是可選的,表示分鐘的整數,介於0 ~ 59;seconds是可選的,表示秒的整數,介於0 ~ 59; ms是可選的,表示毫秒的整數,介於0 ~ 999。
Date.UTC() 是一種靜態方法。 Date.UTC() 方法的參數指定日期和時間,它們都是 UTC 時間,處於 GMT 時區。指定的 UTC 時間將轉換成毫秒的形式,這樣建構函式 Date() 和方法 Date.setTime() 就可以使用它了。
ECMAScript中的Date型別是早期Java中的Java.util.Date類別基礎上建構的。為此,Date類型使用來自UTC(Coordinated Universal Time,國際協調時間)1970年1月1日午夜(零時)開始經過的毫秒數來保存日期。在使用這種資料儲存格式的條件下,Date類型保存的日期能夠精確到1970年1月1日之前或之後的285616年。
注意:parse()日期和時間都是基於本地時區而非GMT來創建。而UTC()是基於GMT來創建。他們的參數也不相同。
GMT:世界時,即格林尼治所在地的標準時間。
console.log(Date.parse(d)); //1379393562000
console.log(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()) ); //1379422362020
ECMAScript5加入了Data.now()方法,傳回表示呼叫此方法時的日期和時間的毫秒數。 IE9才開始支持,不過我們可以透過 操作符來把Data物件轉換成字串,得到同樣的值。
console.log(d1); //1379393793104
console.log(d2); //1379393793104
JavaScript中的日期轉換非常的詭異,不僅會因為參數不同而有不同的解釋結果,而且在各個瀏覽器中的表現也有所不同,如下:
console.log(d1); //Tue Mar 13 2012 00:00:00 GMT 0800 (中國標準時間)
console.log(d2); //Tue Mar 13 2012 08:00:00 GMT 0800 (中國標準時間)
console.log(d3); //Tue Mar 13 2012 00:00:00 GMT 0800 (中國標準時間)
在不同瀏覽器的表現參考:http://dygraphs.com/date-formats.html
為了避免這些問題,請遵照以下的建議:
1.堅持使用 ”YYYY/MM/DD” 的日期字串格式
2.避免使用連字號的日期字串格式”YYYY-MM-DD”
3.要指定四位數的年份
4.Chrome瀏覽器的比其他瀏覽器能接受更多的日期字串,所以如果在Chrome瀏覽器沒有問題,不代表其他瀏覽器沒有問題
更多資訊可以參考:JavaScript and Dates, What a Mess!和 SO中的討論
get系列方法
getDate() 從 Date 物件傳回一個月中的某一天 (1 ~ 31)。
getDay() 從 Date 物件傳回一週中的某一天 (0 ~ 6)。
getMonth() 從 Date 物件傳回月份 (0 ~ 11)。
getFullYear() 從 Date 物件以四位數字傳回年份。注意不要使用getYear()。
getHours() 傳回 Date 物件的小時 (0 ~ 23)。
getMinutes() 傳回 Date 物件的分鐘 (0 ~ 59)。
getSeconds() 傳回 Date 物件的秒數 (0 ~ 59)。
getMilliseconds() 傳回 Date 物件的毫秒(0 ~ 999)。
getTime() 傳回 1970 年 1 月 1 日至今的毫秒數。
getTimezoneOffset() 傳回本地時間與格林威治標準時間 (GMT) 的分鐘差。
getUTCDate() 根據世界時從 Date 物件返回月中的一天 (1 ~ 31)。
getUTCDay() 根據世界時從 Date 物件返回週中的一天 (0 ~ 6)。
getUTCMonth() 根據世界時從 Date 物件傳回月份 (0 ~ 11)。
getUTCFullYear() 根據世界時從 Date 物件傳回四位數的年份。
getUTCHours() 根據世界時傳回 Date 物件的小時 (0 ~ 23)。
getUTCMinutes() 根據世界時傳回 Date 物件的分鐘 (0 ~ 59)。
getUTCSeconds() 根據世界時傳回 Date 物件的秒鐘 (0 ~ 59)。
getUTCMilliseconds() 根據世界時傳回 Date 物件的毫秒(0 ~ 999)。
set系列方法
setDate() 設定 Date 物件中月的某一天 (1 ~ 31)。
setMonth() 設定 Date 物件中月份 (0 ~ 11)。
setFullYear() 設定 Date 物件中的年份(四位數字)。注意不要使用setYear()方法。
setHours() 設定 Date 物件中的小時 (0 ~ 23)。
setMinutes() 設定 Date 物件中的分鐘 (0 ~ 59)。
setSeconds() 設定 Date 物件中的秒鐘 (0 ~ 59)。
setMilliseconds() 設定 Date 物件中的毫秒 (0 ~ 999)。
setTime() 以毫秒設定 Date 物件。
setUTCDate() 依照世界時設定 Date 物件中月份的一天 (1 ~ 31)。
setUTCMonth() 根據世界時設定 Date 物件中的月份 (0 ~ 11)。
setUTCFullYear() 根據世界時設定 Date 物件中的年份(四位數字)。
setUTCHours() 根據世界時設定 Date 物件中的小時 (0 ~ 23)。
setUTCMinutes() 根據世界時設定 Date 物件中的分鐘 (0 ~ 59)。
setUTCSeconds() 根據世界時設定 Date 物件中的秒鐘 (0 ~ 59)。
setUTCMilliseconds() 根據世界時設定 Date 物件中的毫秒 (0 ~ 999)。
toString系列方法
toString() 把 Date 物件轉換為字串,toString()總是傳回一個用美式英文表達的字串。
toTimeString() 把 Date 物件的時間部分轉換為字串。
toDateString() 把 Date 物件的日期部分轉換為字串。
toUTCString() 根據世界時,把 Date 物件轉換為字串。
toLocaleString() 根據本地時間格式,把 Date 物件轉換為字串。
toLocaleTimeString() 根據本地時間格式,把 Date 物件的時間部分轉換為字串。
toLocaleDateString() 根據本地時間格式,把 Date 物件的日期部分轉換為字串。
console.log(d); //Tue Sep 17 2013 13:37:04 GMT 08
console.log(d.toString()); //Tue Sep 17 2013 13:37:04 GMT 0800 (中標準時間)
console.log(d.toTimeString()); //13:37:04 GMT 0800 (中國標準時間)
console.log(d.toDateString() ); //Tue Sep 17 2013
console.log(d.toUTCString()); //Tue, 17 Sep 2013 05:37:04 GMT
console.log(d.toLocaleString()); //2013年9月17日 下午1:37:04
console.log(d.toLocaleTimeString()); //下午1:37:04
console.log(d.toLocaleDateString()); //2013年9月17日