JS內(nèi)置對象之Date時間對象
Date對象是ECMAScript標(biāo)準(zhǔn)定義的趴梢,瀏覽器內(nèi)置 函數(shù)對象之一呢蛤。
一、簡看Date:
? ? ? ? 在瀏覽器中console.log(Date)時缎除,會返回f Date() { [ native code ] }膝但,可見Date是一個函數(shù)對象。
? ? ? ? 實例化Date對象:創(chuàng)建一個新的Date對象的唯一方法是:new Date()项郊。只有將Date作為構(gòu)造函數(shù)調(diào)用時馅扣,才能實例化。而如果將它作為常規(guī)函數(shù)調(diào)用着降,則會返回一個字符串差油。例如:
? ? ? ? Date()和new Date(),雖然在控制臺中打印的都是——Sun Dec 01 2019 20:59:28 GMT+0800,但前者實際上為String類型蓄喇,后者則為Object類型发侵。如圖:
二、Date()構(gòu)造函數(shù)的四種形式:
? ? 1妆偏、沒有參數(shù):即new Date()刃鳄,表示實例化該對象時的日期時間。如:Sun Dec 01 2019 20:59:28 GMT+0800(中國標(biāo)準(zhǔn)時間)钱骂。
? ? 2叔锐、Unix時間戳:即new Date(value),value表示從1970年1月1日0點0分0秒以來到實例化該對象時產(chǎn)生的毫秒數(shù)见秽。如:new Date(1222222)愉烙,返回的是 Thu Jan 01 1970 08:20:22 GMT+0800 (中國標(biāo)準(zhǔn)時間)。
? ? 3解取、分別提供時間的每個成員:按順序分別是年步责、月、日禀苦、時蔓肯、分、秒和毫秒振乏。其中前兩個是必須參數(shù)蔗包,其它為可選。例如:new Date(2019,0,12,23,2,39,99)昆码,返回 Sat Jan 12 2019 23:02:39 GMT+0800 (中國標(biāo)準(zhǔn)時間)气忠,表示2019年1月12日的晚上11點2分39秒99毫秒,因為這天正好是一月的星期六赋咽,所以開頭顯示的是Sat 和 Jan旧噪。(推薦使用)
? ? 4、時間戳字符串:即傳入一個表示日期的字符串脓匿,如new Date('December 17, 1995 03:24:00')淘钟,但由于瀏覽器差異不一致,因此不建議使用此方法陪毡。
注意點:①米母、這里說的格里尼治時間,就是我們常說的0度經(jīng)線的地方平時毡琉,也叫格林平時铁瞒。格林平時的英文是Greenwich Mean Time,簡稱GMT桅滋,實際上就是UT(universal time )也叫世界時的慧耍。這個里說的+0800身辨,代表的是東八區(qū)中軸線120度經(jīng)線的地方平時(即咱們常說的北京時間);②芍碧、如果只提供了兩個參數(shù)煌珊,那么其他參數(shù)均會設(shè)置為1或者0。例如:
很清楚的看到:1泌豆、第一個只傳入一個參數(shù)定庵,則表示Unix時間戳形式,這里的1000表示1970.01.01的00:00:00后的1000毫秒的UTC時間踪危,也就是這個時間的一分鐘后蔬浙,而由于咱們所在的時區(qū)是東八區(qū),所以最終時間為1970.01.01的08:00:01陨倡。
2敛滋、第二組則傳了年和月兩個參數(shù),因為day(日)沒傳入兴革,所以默認(rèn)從第一天顯示,其它像小時蜜唾、分鐘杂曲、秒就默認(rèn)為0。
3袁余、第三組外加了day(日)擎勘,所以只是默認(rèn)其它的參數(shù)為0。
三颖榜、Date的屬性和方法:
? ? 屬性:? ?
? ? ? ? 1棚饵、Date.prototype:原型對象,可在其上拓展Date的屬性和方法掩完。
? ? ? ? 2噪漾、Date.length:即Date的形參數(shù)量,也就是年且蓬、月欣硼、日、時恶阴、分诈胜、秒和毫秒六個參數(shù),也就是7冯事。
? ? 方法:
? ? ? ? 1焦匈、Date.now():返回1970-01-01的00:00:00 UTC到現(xiàn)在所經(jīng)過的毫秒數(shù)。可用來測試代碼執(zhí)行時長昵仅。?
? ? ? ? 2缓熟、Date.UTC()和Date.parse(),暫做了解即可。
四荚虚、Date實例的方法:
? ? ? ? 也就是Date.prototype原型對象上定義的屬性方法薛夜,具體方法有很多,主要分為三類:
? ? ? ? 1版述、get類:如getTime()梯澜、getFullYear()、getDate()渴析、getDate()晚伙、getHours()、getMilliseconds()俭茧、getMinutes()咆疗、getMonth()、getSeconds()母债、getTimezoneOffset()午磁、getYear() 。
? ? ? ? 2毡们、set類:具體寫法和上面一樣迅皇。
? ? ? ? 3、to類:如toDateString()衙熔、toJSON()登颓、toLocaleDateString()、toLocaleFormat()红氯、toLocaleString()框咙、toLocaleTimeString()、toString()痢甘、toTimeString()喇嘱,以及valueOf()。
五产阱、兼容性:
? ? ? ? 根據(jù)MDN官方文檔內(nèi)容婉称,上述方法和屬性在主流瀏覽器的大多數(shù)版本中都支持。但也存在一下例外:如Date.now()构蹬、toISOString()從IE9開始支持王暗,toJSON()從IE8開始支持,當(dāng)然庄敛,這兩個其實還好俗壹。而這兩個方法就有點慘了,像toLocaleFormat()藻烤,這是使用格式字符串將日期轉(zhuǎn)換成字符串的方法绷雏,目前只在火狐(PC和移動)的部分版本中支持头滔,其它都不支持;toSource()也只在火狐中支持涎显。除此之外坤检,其它所有方法現(xiàn)在都不需考慮兼容性問題。