JavaScript原生對(duì)象之Date對(duì)象的屬性和方法詳解
創(chuàng)建 Date 對(duì)象的語法:
//Date 對(duì)象會(huì)自動(dòng)把當(dāng)前日期和時(shí)間保存為其初始值。
new Date();
//value-毫秒:代表自世界協(xié)調(diào)時(shí)1970年1月1日00:00:00開始的數(shù)值。
new Date(value);
//dateString-日期字符串:表示日期的字符串值。此字符串應(yīng)該是在parse方法中識(shí)別的格式。
new Date(dateString);
//year-年:代表年份的整數(shù)值。為了避免2000年問題最好指定4位數(shù)的年份; 使用1998, 而不要用98
//month-月:代表月份的整數(shù)值從0(1月)到11(12月)
//day-日:代表一個(gè)月中的第幾天的整數(shù)值,從1開始
//hour-小時(shí):代表一天中的小時(shí)數(shù)的整數(shù)值 (24小時(shí)制)
//minute-分鐘
//second-秒
//millisecond-毫秒
new Date(year, month, day [, hour, minute, second, millisecond]);
Date()
Date() 方法可返回當(dāng)天的日期和時(shí)間。
console.log(Date()); //"Tue Sep 17 2013 12:22:55 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)"
parse()
parse() 方法可解析一個(gè)日期時(shí)間字符串,并返回 1970/1/1 午夜距離該日期時(shí)間的毫秒數(shù)。
Date.parse(datestring)
參數(shù)datestring是必需的,表示日期和時(shí)間的字符串。
注意,該方法是 Date 對(duì)象的靜態(tài)方法。一般采用 Date.parse() 的形式來調(diào)用,而不是通過 dateobject.parse() 調(diào)用該方法。
console.log(Date.parse(Date())); //1379392301000
console.log(Date.parse("Aug 9, 1995")); //807897600000
UTC()
UTC() 方法可根據(jù)世界時(shí)返回 1970 年 1 月 1 日 到指定日期的毫秒數(shù)。
Date.UTC(year, month, day, hours, minutes, seconds, ms)
參數(shù)year是必需的,表示年份的四位數(shù)字;month是必需的,表示月份的整數(shù),介于 0 ~ 11;day是可選的,表示日期的整數(shù),介于 1 ~ 31;hours是可選的,表示小時(shí)的整數(shù),介于 0 ~ 23;minutes是可選的,表示分鐘的整數(shù),介于 0 ~ 59;seconds是可選的,表示秒的整數(shù),介于 0 ~ 59;ms是可選的,表示毫秒的整數(shù),介于 0 ~ 999。
Date.UTC() 是一種靜態(tài)方法。Date.UTC() 方法的參數(shù)指定日期和時(shí)間,它們都是 UTC 時(shí)間,處于 GMT 時(shí)區(qū)。指定的 UTC 時(shí)間將轉(zhuǎn)換成毫秒的形式,這樣構(gòu)造函數(shù) Date() 和方法 Date.setTime() 就可以使用它了。
ECMAScript中的Date類型是早期Java中的Java.util.Date類基礎(chǔ)上構(gòu)建的。為此,Date類型使用來自UTC(Coordinated Universal Time,國際協(xié)調(diào)時(shí)間)1970年1月1日午夜(零時(shí))開始經(jīng)過的毫秒數(shù)來保存日期。在使用這種數(shù)據(jù)存儲(chǔ)格式的條件下,Date類型保存的日期能夠精確到1970年1月1日之前或之后的285616年。
注意:parse()日期和時(shí)間都基于本地時(shí)區(qū)而非GMT來創(chuàng)建。而UTC()是基于GMT來創(chuàng)建。他們的參數(shù)也不相同。
GMT:世界時(shí),即格林尼治所在地的標(biāo)準(zhǔn)時(shí)間。
var d = new Date();
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()方法,返回表示調(diào)用這個(gè)方法時(shí)的日期和時(shí)間的毫秒數(shù)。IE9才開始支持,不過我們可以通過 + 操作符來把Data對(duì)象轉(zhuǎn)換成字符串,得到同樣的值。
var d1 = Date.now();
var d2 = + new Date();
console.log(d1); //1379393793104
console.log(d2); //1379393793104
JavaScript中的日期轉(zhuǎn)換非常的詭異,不僅會(huì)因?yàn)閰?shù)不同而有不同的解釋結(jié)果,而且在各個(gè)瀏覽器中的表現(xiàn)也有所不同,如下:
var d1 = new Date("2012/03/13");
var d2 = new Date("2012-03-13");
var d3 = new Date("2012-3-13");
console.log(d1); //Tue Mar 13 2012 00:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
console.log(d2); //Tue Mar 13 2012 08:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
console.log(d3); //Tue Mar 13 2012 00:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
在不同瀏覽器中的表現(xiàn)參考:http://dygraphs.com/date-formats.html
為了避免這些問題,請(qǐng)遵照下面的建議:
1.堅(jiān)持使用 ”YYYY/MM/DD” 的日期字符串格式
2.避免使用帶有連字號(hào)的日期字符串格式”YYYY-MM-DD”
3.要指定四位數(shù)的年份
4.Chrome瀏覽器的比其他瀏覽器能接受更多的日期字符串,所以如果在Chrome瀏覽器沒有問題,不代表其他瀏覽器沒有問題
更多信息可以參考:JavaScript and Dates, What a Mess!和 SO中的討論
get系列方法
getDate() 從 Date 對(duì)象返回一個(gè)月中的某一天 (1 ~ 31)。
getDay() 從 Date 對(duì)象返回一周中的某一天 (0 ~ 6)。
getMonth() 從 Date 對(duì)象返回月份 (0 ~ 11)。
getFullYear() 從 Date 對(duì)象以四位數(shù)字返回年份。注意不要使用getYear()。
getHours() 返回 Date 對(duì)象的小時(shí) (0 ~ 23)。
getMinutes() 返回 Date 對(duì)象的分鐘 (0 ~ 59)。
getSeconds() 返回 Date 對(duì)象的秒數(shù) (0 ~ 59)。
getMilliseconds() 返回 Date 對(duì)象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒數(shù)。
getTimezoneOffset() 返回本地時(shí)間與格林威治標(biāo)準(zhǔn)時(shí)間 (GMT) 的分鐘差。
getUTCDate() 根據(jù)世界時(shí)從 Date 對(duì)象返回月中的一天 (1 ~ 31)。
getUTCDay() 根據(jù)世界時(shí)從 Date 對(duì)象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根據(jù)世界時(shí)從 Date 對(duì)象返回月份 (0 ~ 11)。
getUTCFullYear() 根據(jù)世界時(shí)從 Date 對(duì)象返回四位數(shù)的年份。
getUTCHours() 根據(jù)世界時(shí)返回 Date 對(duì)象的小時(shí) (0 ~ 23)。
getUTCMinutes() 根據(jù)世界時(shí)返回 Date 對(duì)象的分鐘 (0 ~ 59)。
getUTCSeconds() 根據(jù)世界時(shí)返回 Date 對(duì)象的秒鐘 (0 ~ 59)。
getUTCMilliseconds() 根據(jù)世界時(shí)返回 Date 對(duì)象的毫秒(0 ~ 999)。
set系列方法
setDate() 設(shè)置 Date 對(duì)象中月的某一天 (1 ~ 31)。
setMonth() 設(shè)置 Date 對(duì)象中月份 (0 ~ 11)。
setFullYear() 設(shè)置 Date 對(duì)象中的年份(四位數(shù)字)。注意不要使用setYear()方法。
setHours() 設(shè)置 Date 對(duì)象中的小時(shí) (0 ~ 23)。
setMinutes() 設(shè)置 Date 對(duì)象中的分鐘 (0 ~ 59)。
setSeconds() 設(shè)置 Date 對(duì)象中的秒鐘 (0 ~ 59)。
setMilliseconds() 設(shè)置 Date 對(duì)象中的毫秒 (0 ~ 999)。
setTime() 以毫秒設(shè)置 Date 對(duì)象。
setUTCDate() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中月份的一天 (1 ~ 31)。
setUTCMonth() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的月份 (0 ~ 11)。
setUTCFullYear() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的年份(四位數(shù)字)。
setUTCHours() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的小時(shí) (0 ~ 23)。
setUTCMinutes() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的分鐘 (0 ~ 59)。
setUTCSeconds() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的秒鐘 (0 ~ 59)。
setUTCMilliseconds() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的毫秒 (0 ~ 999)。
toString系列方法
toString() 把 Date 對(duì)象轉(zhuǎn)換為字符串,toString()總是返回一個(gè)用美式英語表達(dá)的字符串。
toTimeString() 把 Date 對(duì)象的時(shí)間部分轉(zhuǎn)換為字符串。
toDateString() 把 Date 對(duì)象的日期部分轉(zhuǎn)換為字符串。
toUTCString() 根據(jù)世界時(shí),把 Date 對(duì)象轉(zhuǎn)換為字符串。
toLocaleString() 根據(jù)本地時(shí)間格式,把 Date 對(duì)象轉(zhuǎn)換為字符串。
toLocaleTimeString() 根據(jù)本地時(shí)間格式,把 Date 對(duì)象的時(shí)間部分轉(zhuǎn)換為字符串。
toLocaleDateString() 根據(jù)本地時(shí)間格式,把 Date 對(duì)象的日期部分轉(zhuǎn)換為字符串。
var d = new Date();
console.log(d); //Tue Sep 17 2013 13:37:04 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
console.log(d.toString()); //Tue Sep 17 2013 13:37:04 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
console.log(d.toTimeString()); //13:37:04 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
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日
注意toLocaleString()系列方法可以接收參數(shù),來確定按照什么習(xí)慣來輸出,參考:MDN
var d = new Date();
console.log(d.toLocaleString("ko-KR")); //2013년 9월 17일 오후 1:48:24
相關(guān)文章
淺析document.ready和window.onload的區(qū)別講解
這篇文章主要介紹了document.ready和window.onload的區(qū)別,有需要的朋友可以參考一下2013-12-12JavaScript高級(jí)程序設(shè)計(jì)(第3版)學(xué)習(xí)筆記2 js基礎(chǔ)語法
這一篇復(fù)習(xí)一下ECMAScript規(guī)范中的基礎(chǔ)語法,英文好的朋友可以直接閱讀官方文檔。JavaScript本質(zhì)上也是一種類C語言,熟悉C語言的朋友,可以非常輕松的閱讀這篇文章,甚至都可以跳過,不過建議你最好還是看一看,在介紹的同時(shí),我可能會(huì)引用一些自認(rèn)為不易理解且比較流行的用法。2012-10-10javascript 數(shù)組的定義和數(shù)組的長度
本文主要介紹javascript 數(shù)組的定義和數(shù)組的長度,比較簡單,希望能給大家做一個(gè)參考。2016-06-06詳細(xì)介紹8款超實(shí)用JavaScript框架
下面盤點(diǎn)了8款實(shí)用的JavaScript框架,有需要的朋友可以參考一下2013-10-10