ECMAScipt中的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ù)存儲格式的條件下扭吁,Date類型保存的日期能夠精確到1970年1月1日之前或之后的285616年撞蜂。
創(chuàng)建一個(gè)日期對象
var now = new Date();
在調(diào)用Date構(gòu)造函數(shù)而不傳遞參數(shù)的情況下,新創(chuàng)建的對象自動(dòng)獲得當(dāng)前日期和時(shí)間
Date.parse() 方法接收一個(gè)表示日期的字符串參數(shù)侥袜,然后嘗試根據(jù)這個(gè)字符串返回相應(yīng)日期的毫秒數(shù)
Date.UTC() 方法同樣也返回表示日期的毫秒數(shù)蝌诡,但它與Date.parse()在構(gòu)建值時(shí)使用不同的信息
ECMAScript 5添加了Data.now()方法,返回表示調(diào)用這個(gè)方法時(shí)的日期和時(shí)間的毫秒數(shù)
//取得開始時(shí)間
var start = Date.now();
//取得停止時(shí)間
var stop = Date.now();
result = stop - start;
由于部分瀏覽器不支持Data.now()方法系馆,故如下兼容:
//取得開始時(shí)間
var start = +new Date();
//取得停止時(shí)間
var stop = +new Date();
result = stop - start;
繼承的方法:
Date類型重寫了
toLocaleString(), toString(), valueOf();
其中toLocaleString(), toString()在不同瀏覽器下返回的日期和時(shí)間格式相差太大,valueOf()方法不返回字符串顽照,返回日期的毫秒數(shù)
因此由蘑,這三個(gè)在調(diào)試時(shí)候作用較大,而在顯示日期和時(shí)間時(shí)沒有什么價(jià)值代兵;
日期格式化方法:
Date類型還有一些專門用于將日期格式化為字符串的方法
toDateString()------new Date(1465920000000).toDateString() ==> "Wed Jun 15 2016"
toTimeString()------new Date(1465920000000).toTimeString() ==> "00:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)"
toLocaleDateString()------new Date(1465920000000).toLocaleDateString() ==> "2016/6/15"
toLocaleTimeString()------new Date(1465920000000).toLocaleTimeString() ==> "上午12:00:00"
不過尼酿,以上這些字符串格式方法的輸出也是因?yàn)g覽器而異的,所以不建議使用
日期/時(shí)間組件方法
UTC日期指的是在沒有時(shí)區(qū)偏差的情況下(將日期轉(zhuǎn)換為GMT時(shí)間)的日期值;
以下只整理出常用值
getTime() -- 返回表示日期的毫秒數(shù)
new Date('2017/12/13').getTime() ==> 1513094400000;
setTime() -- 以毫秒數(shù)設(shè)置日期植影,會(huì)改變整個(gè)日期
getFullYear() -- 取得四位數(shù)的年份
new Date('2017/12/13').getFullYear() ==> 2017
getMonth() -- 取得日期中的月份裳擎,0表示1月,11表示十二月
setMonth() -- 設(shè)置日期中的月份思币,傳入的月份值必須大于0鹿响,超過11則增加年份
getDate() -- 返回日期月份中的天數(shù)( 1到31 )
setDate() -- 設(shè)置日期月份中的天數(shù)羡微。如果傳入的值超過了該月中應(yīng)有的天數(shù),則增加月份惶我;
var aa = new Date('2016/12/13')
aa.setDate(1)
aa.toLocaleDateString() ==> "2016/12/1"
aa.setDate(40)
aa.toLocaleDateString() ==> "2017/1/9"
getDay() -- 返回日期中的星期幾( 0 表示星期日 6 表示星期六)
getHours() -- 返回日期中的小時(shí)數(shù)
setHours() -- 設(shè)置日期中的小時(shí)數(shù)妈倔,傳入的值超過23,則增加月份中的天數(shù)
getMinutes() -- 返回日期中的分鐘數(shù)
setMinutes() -- 設(shè)置日期中的分鐘數(shù)绸贡,超過59則增加小時(shí)數(shù)
getSeconds() -- 獲取日期中的秒數(shù)
setSeconds() -- 設(shè)置日期中的秒數(shù)盯蝴,傳入的值超過59,則增加分鐘數(shù)
getMilliseconds() -- 返回毫秒數(shù)
setMilliseconds() -- 設(shè)置毫秒數(shù)