一、Date作為工具函數(shù)
Date
對象是JS提供的日期和時間的操作接口愚墓。
Date
對象作為工具函數(shù)直接使用予权,不管有沒有參數(shù),都是返回當前時間的字符串浪册。
二扫腺、new Date()
Date
還可以當作構(gòu)造函數(shù)使用,返回一個Date
對象的實例村象,如果不加參數(shù)笆环,生成的就是代表當前時間的對象。
var today = new Date();
這個Date
實例對應(yīng)的字符串值厚者,就是當前時間咧织。
同時作為構(gòu)造函數(shù),里面還可以接受多種形式的參數(shù)籍救。
[ 注 ]:北京時間,又名中國標準時間(CST
)渠抹,是中國大陸的標準時間蝙昙,比世界協(xié)調(diào)時快八小時(即UTC+8
)闪萄,或者是比格林威治時間快八小時(即GMT+8
),因為格林威治時間(GMT
)和世界協(xié)調(diào)時間(UTC
)處于同個時區(qū)奇颠。
2.1败去、new Date(milliseconds)
將你要得到的那個日期轉(zhuǎn)化成毫秒數(shù),時間是從1970年1月1日00:00:00 UTC
開始計算的烈拒。
// 將1970年1月2日的 零時 轉(zhuǎn)為時間對象
//注意圆裕,這里是零時,那東八區(qū)就會+8
var Jan02_1970 = new Date( 24* 60 * 60 * 1000);
// Fri Jan 02 1970 08:00:00 GMT+0800(中國標準時間)
// 將1969年12月31日的零時轉(zhuǎn)為時間對象
var Dec31_1969 = new Date(- 24 * 60 * 60 * 1000);
// Wed Dec 31 1969 08:00:00 GMT+0800(中國標準時間)
上面最后一個例子說明荆几,Date
構(gòu)造函數(shù)的參數(shù)可以是一個負數(shù)吓妆,表示1970年1月1日之前的時間。
2.2吨铸、new Date(datestring)
Date
對象還接受一個日期字符串作為參數(shù)行拢,返回所對應(yīng)的時間。
new Date('Jan 2, 2017');
// Mon Jan 02 2017 00:00:00 GMT+0800 (中國標準時間)
對于YYYY-MM-DD
形式的字符串诞吱,JavaScript引擎可能會將其當作ISO格式來解析舟奠,采用格林尼治時區(qū)作為計時標準;而對于其他格式的日期字符串房维,一律視為非ISO格式沼瘫,采用本地時區(qū)作為計時標準。
2.3咙俩、new Date(year, month [, date, hours, minutes, seconds, ms])
Date
對象還可以接受多個整數(shù)作為參數(shù)耿戚,依次表示年、月暴浦、日溅话、小時、分鐘歌焦、秒和毫秒飞几。如果采用這種格式,最少需要提供兩個參數(shù)(年和月)独撇,其他參數(shù)都是可選的屑墨。
注意:月份從0開始計算,日期date默認為1纷铣,其它默認為0卵史。
三、日期的運算
類型轉(zhuǎn)換時搜立,Date
對象的實例如果轉(zhuǎn)為數(shù)值以躯,則等于對應(yīng)的毫秒數(shù);
如果轉(zhuǎn)為字符串,則等于對應(yīng)的日期字符串忧设。
所以刁标,兩個日期對象進行減法運算,返回的就是它們間隔的毫秒數(shù)址晕;進行加法運算膀懈,返回的就是連接后的兩個字符串。
四谨垃、Date對象的靜態(tài)方法
4.1启搂、Date.now() [ 當前時間是CST時間,會轉(zhuǎn)成GMT時間計算 ]
Date.now
方法返回當前時間的UTC
時間距離1970年1月1日 00:00:00 UTC
的毫秒數(shù)刘陶。
這個當前是個什么時間胳赌?
假設(shè)我電腦現(xiàn)在顯示2017年1月2日 11:15:00 CST
這是東八區(qū)時間,那要先轉(zhuǎn)化為UTC時間-8
即2017年1月2日 03:15:00 UTC
然后計算這個時間距離1970年1月1日 00:00:00 UTC
的毫秒數(shù)易核。
4.2匈织、Date.parse() [ 參數(shù)是CST或GMT,是CST則轉(zhuǎn)成GMT時間計算 ]
Date.parse
方法用來解析日期字符串牡直,返回距離1970年1月1日 00:00:00 UTC
的毫秒數(shù)缀匕。
如果解析失敗,返回NaN碰逸。
4.3乡小、Date.UTC() [ 參數(shù)是GMT無需轉(zhuǎn)換 ]
該方法接受年、月饵史、日等變量作為參數(shù)满钟,參數(shù)就是UTC
時間,返回距離1970年1月1日 00:00:00 UTC
的毫秒數(shù)胳喷。
現(xiàn)在發(fā)現(xiàn)有點懵B湃番,這些個方法,參數(shù)吭露,時區(qū)吠撮,得到的結(jié)果讓人摸不著頭腦,甚是玄乎啊讲竿,不知道怎么記憶泥兰。
五、Date實例對象的方法
Date
的實例對象题禀,有幾十個自己的方法鞋诗,分為以下三類。
- to類:從Date對象返回一個字符串迈嘹,表示指定的時間削彬。
- get類:獲取Date對象的日期和時間。
- set類:設(shè)置Date對象的日期和時間。
5.1吃警、to類方法
toString:返回當前時區(qū)的完整日期字符串糕篇;
toUTCString:返回返回對應(yīng)的UTC時間完整日期字符串;
toDateString:返回日期字符串酌心;
toTimeString:返回時間字符串;
toLocaleTimeString:返回一個字符串挑豌,代表時間的當?shù)貙懛ā?/p>
5.2安券、get類方法
Date
對象提供了一系列get*
方法,用來獲取實例對象某個方面的值氓英。
getFullYear: 獲取實例的四位年份侯勉;
getMonth:獲取月份(0表1月,11表12月)铝阐;
getDate:獲取幾號址貌;
getDay:獲取星期(0為星期日,1為星期一)徘键;
getHours:返回小時练对;
getMinutes:返回分鐘;
getSeconds:返回秒吹害;
getMilliseconds:返回毫秒螟凭;
getTime():返回距離1970年1月1日00:00:00的毫秒數(shù),相當于valueOf();
5.3它呀、set類方法
Date
對象提供了一系列set*
方法螺男,用來設(shè)置實例對象的各個方面。
setFullYear:設(shè)置實例的四位年份纵穿;
setMonth:設(shè)置月份下隧;
setDate:設(shè)置日子;
setHours:設(shè)置小時谓媒;
setMinutes:設(shè)置分鐘淆院;
setSeconds:設(shè)置秒;
setMilliseconds:設(shè)置毫秒篙耗;
setTime:設(shè)置毫秒時間戳迫筑;
(本系列下一節(jié)為 — Math對象)