淺談javascript中關(guān)于日期和時(shí)間的基礎(chǔ)知識(shí)
前面的話(huà)
在介紹Date對(duì)象之前,首先要先了解關(guān)于日期和時(shí)間的一些知識(shí)。比如,閏年、UTC等等。深入了解這些,有助于更好地理解javascript中的Date對(duì)象。本文將介紹javascript關(guān)于日期和時(shí)間的基礎(chǔ)知識(shí)
標(biāo)準(zhǔn)時(shí)間一般而言的標(biāo)準(zhǔn)時(shí)間是指GMT和UTC,以前是GMT,現(xiàn)在是UTC
GMT
格林尼治標(biāo)準(zhǔn)時(shí)間(GMT)是指位于倫敦郊區(qū)的皇家格林尼治天文臺(tái)的標(biāo)準(zhǔn)時(shí)間,因?yàn)楸境踝游缇€(xiàn)被定義在通過(guò)那里的經(jīng)線(xiàn)
理論上來(lái)說(shuō),格林尼治標(biāo)準(zhǔn)時(shí)間的正午是指當(dāng)太陽(yáng)橫穿格林尼治子午線(xiàn)時(shí)(也就是在格林尼治上空最高點(diǎn)時(shí))的時(shí)間。由于地球在它的橢圓軌道里的運(yùn)動(dòng)速度不均勻,這個(gè)時(shí)刻可能和實(shí)際的太陽(yáng)時(shí)相差16分鐘
地球每天的自轉(zhuǎn)是有些不規(guī)則的,而且正在緩慢減速。所以,格林尼治時(shí)間已經(jīng)不再被作為標(biāo)準(zhǔn)時(shí)間使用?,F(xiàn)在的標(biāo)準(zhǔn)時(shí)間——世界協(xié)調(diào)時(shí)間(UTC)提供
UTC
世界協(xié)調(diào)時(shí)間(UTC)又稱(chēng)世界統(tǒng)一時(shí)間,世界標(biāo)準(zhǔn)時(shí)間,國(guó)際協(xié)調(diào)時(shí)間,全稱(chēng)Coordinated Universal Time,是以原子時(shí)秒長(zhǎng)為基礎(chǔ),在時(shí)刻上盡量接近于世界時(shí)的一種時(shí)間計(jì)量系統(tǒng)
這套時(shí)間系統(tǒng)被應(yīng)用于許多互聯(lián)網(wǎng)和萬(wàn)維網(wǎng)的標(biāo)準(zhǔn)中,中國(guó)大陸、中國(guó)香港、中國(guó)澳門(mén)、中國(guó)臺(tái)灣、蒙古國(guó)、新加坡、馬來(lái)西亞、菲律賓、西澳大利亞州的時(shí)間與UTC的時(shí)差均為+8,也就是UTC+8
在軍事中,協(xié)調(diào)世界時(shí)區(qū)會(huì)使用“Z”來(lái)表示。又由于Z在無(wú)線(xiàn)電聯(lián)絡(luò)中使用“Zulu”作代稱(chēng),協(xié)調(diào)世界時(shí)也會(huì)被稱(chēng)為"Zulu time"
日期時(shí)間字符串格式
ECMAScript定義了一個(gè)基于簡(jiǎn)化的ISO8601擴(kuò)展格式的日期時(shí)間的字符串互換格式
日期時(shí)間完整格式為: YYYY-MM-DDTHH:mm:ss.sssZ
[注意]前置0不能省略,否則在完整格式的情況下會(huì)報(bào)錯(cuò)
YYYY 公歷中年的十進(jìn)制數(shù)字,如果這個(gè)參數(shù)值在0-99之間,則向它加上1900 - 在字符串中直接以“-”(破折號(hào))出現(xiàn)兩次 MM 一年中的月份,從01(一月)到12(十二月) DD 月份中的日期,從01到31 T 在字符串中直接以“T”出現(xiàn),用來(lái)表明時(shí)間元素的開(kāi)始 HH 用兩個(gè)十進(jìn)制數(shù)字表示的,自午夜0點(diǎn)以來(lái)的小時(shí)數(shù) : 在字符串中直接以“:”(冒號(hào))出現(xiàn)兩次 mm 是用兩個(gè)十進(jìn)制數(shù)字表示的,自小時(shí)開(kāi)始以來(lái)的分鐘數(shù) ss 是用兩個(gè)十進(jìn)制數(shù)字表示的,自分開(kāi)始以來(lái)的秒數(shù) . 在字符串中直接以“.”(點(diǎn))出現(xiàn) sss 是用三個(gè)十進(jìn)制數(shù)字表示的,自秒開(kāi)始以來(lái)的毫秒數(shù) Z 是時(shí)區(qū)偏移量,由(“Z”(指UTC)或“+”或“-”)和后面跟著的時(shí)間表達(dá)式hh:mm組成
只表示日期的格式: YYYY YYYY-MM YYYY-MM-DD
[注意]所有數(shù)字必須是10進(jìn)制的。如果缺少M(fèi)M或DD字段,用“01”作為它們的值。如果缺少mm或ss字段,用“00”作為它們的值,對(duì)于缺少的sss用“000”作為它的值。對(duì)于缺少的時(shí)區(qū)偏移量用“Z”
閏年
年分為閏年和平年,平年有365天,閏年有366天,閏年的2月比平年多一天
閏年的定義是(可被4整除)且((不可被100整除)或(可被400整除))的年份
口訣是:四年一閏,百年不閏,四百年再閏
function IsLeapYear(year){ if(typeof year == 'number'){ if((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0){ return 'leap year' }else{ return 'common year' } } return 'please input number' }
console.log(IsLeapYear(4));//'leap year' console.log(IsLeapYear(400));//'leap year' console.log(IsLeapYear(2000));//'leap year' console.log(IsLeapYear(1900));//'common year'
月日
一年有12個(gè)月,其中4、6、9、11月每月有30天;如果是閏年,2月有29天,否則 ,2月有28天。1、3、5、7、8、10、12月每月有31天
在javascript中,月的計(jì)算從0開(kāi)始,所以1-12月,分別用0-11來(lái)表示;而日的計(jì)算則從1開(kāi)始,1就代表第1天,以此類(lèi)推
if(month == 2){ //如果是閏年 if((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0){ days = 29; //如果是平年 }else{ days = 28; } //如果是第4、6、9、11月 }else if(month == 4 || month == 6 ||month == 9 ||month == 11){ days = 30; }else{ days = 31; }
在javascript中,月份的簡(jiǎn)寫(xiě)經(jīng)常在日期字符串中使用
一月 Jan January 二月 Feb February 三月 Mar March 四月 Apr April 五月 May May 六月 Jun June 七月 Jul July 八月 Aug August 九月 Sep September 十月 Oct October 十一月 Nov November 十二月 Dec December
星期
星期是從星期日開(kāi)始,到星期六結(jié)束,分別用0-6來(lái)表示
在javascript中,各星期的簡(jiǎn)寫(xiě)經(jīng)常在日期字符串中使用
星期日 sunday Sun 星期一 monday Mon 星期二 Tuesday Tue 星期三 Wednesday Wed 星期四 Thursday Thu 星期五 Fridday Fri 星期六 Saturday Sar
時(shí)分秒
1天 = 24小時(shí) = 24*60(1440)分 = 24*60*60(86400)秒 = 86,400,000毫秒 1分= 60秒 1小時(shí) = 3600秒 1天 = 86400秒
Date對(duì)象返回的是一個(gè)毫秒數(shù),經(jīng)常需要將其換算成時(shí)分秒的形式
date = 100000s day(天) = Math.floor(100000/86400) = 1 hour(小時(shí)) = Math.floor((100000%86400)/3600) = 3 minute(分) = Math.floor((100000%3600)/60) = 46 second(秒) = Math.floor(100000%60)=40 console.log(100000 === 1*86400+ 3*3600+ 46*60+40);//true
以上這篇淺談javascript中關(guān)于日期和時(shí)間的基礎(chǔ)知識(shí)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript的代碼編寫(xiě)格式規(guī)范指南
這篇文章主要介紹了JavaScript的代碼編寫(xiě)格式規(guī)范指南,文中所分享的一些細(xì)節(jié)基本上也是各大js代碼格式化插件所默認(rèn)約定俗成的,需要的朋友可以參考下2015-12-12簡(jiǎn)介JavaScript中strike()方法的使用
這篇文章主要介紹了簡(jiǎn)介JavaScript中strike()方法的使用,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06JavaScript操作HTML DOM節(jié)點(diǎn)的基礎(chǔ)教程
這篇文章主要介紹了JavaScript操作HTML DOM節(jié)點(diǎn)的基礎(chǔ)入門(mén)教程,包括對(duì)節(jié)點(diǎn)的創(chuàng)建修改刪除等操作,還特別提到了其中appendChild()與insertBefore()插入節(jié)點(diǎn)時(shí)需注意的問(wèn)題,需要的朋友可以參考下2016-03-03

js中基礎(chǔ)的數(shù)據(jù)類(lèi)型詳解

Javascript基礎(chǔ)知識(shí)(一)核心基礎(chǔ)語(yǔ)法與事件模型