前面的話
在介紹Date對象之前,首先要先了解關于日期和時間的一些知識。比如,閏年、UTC等等。深入了解這些,有助于更好地理解javascript中的Date對象。本文將介紹javascript關于日期和時間的基礎知識
標準時間一般而言的標準時間是指GMT和UTC,以前是GMT,現在是UTC
GMT
格林尼治標準時間(GMT)是指位于倫敦郊區的皇家格林尼治天文臺的標準時間,因為本初子午線被定義在通過那里的經線
理論上來說,格林尼治標準時間的正午是指當太陽橫穿格林尼治子午線時(也就是在格林尼治上空最高點時)的時間。由于地球在它的橢圓軌道里的運動速度不均勻,這個時刻可能和實際的太陽時相差16分鐘
地球每天的自轉是有些不規則的,而且正在緩慢減速。所以,格林尼治時間已經不再被作為標準時間使用。現在的標準時間――世界協調時間(UTC)提供
UTC
世界協調時間(UTC)又稱世界統一時間,世界標準時間,國際協調時間,全稱Coordinated Universal Time,是以原子時秒長為基礎,在時刻上盡量接近于世界時的一種時間計量系統
這套時間系統被應用于許多互聯網和萬維網的標準中,中國大陸、中國香港、中國澳門、中國臺灣、蒙古國、新加坡、馬來西亞、菲律賓、西澳大利亞州的時間與UTC的時差均為+8,也就是UTC+8
在軍事中,協調世界時區會使用“Z”來表示。又由于Z在無線電聯絡中使用“Zulu”作代稱,協調世界時也會被稱為"Zulu time"
日期時間字符串格式
ECMAScript定義了一個基于簡化的ISO8601擴展格式的日期時間的字符串互換格式
日期時間完整格式為: YYYY-MM-DDTHH:mm:ss.sssZ
[注意]前置0不能省略,否則在完整格式的情況下會報錯
YYYY 公歷中年的十進制數字,如果這個參數值在0-99之間,則向它加上1900- 在字符串中直接以“-”(破折號)出現兩次MM 一年中的月份,從01(一月)到12(十二月)DD 月份中的日期,從01到31T 在字符串中直接以“T”出現,用來表明時間元素的開始HH 用兩個十進制數字表示的,自午夜0點以來的小時數: 在字符串中直接以“:”(冒號)出現兩次mm 是用兩個十進制數字表示的,自小時開始以來的分鐘數ss 是用兩個十進制數字表示的,自分開始以來的秒數. 在字符串中直接以“.”(點)出現sss 是用三個十進制數字表示的,自秒開始以來的毫秒數Z 是時區偏移量,由(“Z”(指UTC)或“+”或“-”)和后面跟著的時間表達式hh:mm組成
只表示日期的格式: YYYY YYYY-MM YYYY-MM-DD
[注意]所有數字必須是10進制的。如果缺少MM或DD字段,用“01”作為它們的值。如果缺少mm或ss字段,用“00”作為它們的值,對于缺少的sss用“000”作為它的值。對于缺少的時區偏移量用“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個月,其中4、6、9、11月每月有30天;如果是閏年,2月有29天,否則 ,2月有28天。1、3、5、7、8、10、12月每月有31天
在javascript中,月的計算從0開始,所以1-12月,分別用0-11來表示;而日的計算則從1開始,1就代表第1天,以此類推
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中,月份的簡寫經常在日期字符串中使用
一月 Jan January二月 Feb February三月 Mar March四月 Apr April五月 May May六月 Jun June七月 Jul July八月 Aug August九月 Sep September十月 Oct October十一月 Nov November十二月 Dec December
星期
星期是從星期日開始,到星期六結束,分別用0-6來表示
在javascript中,各星期的簡寫經常在日期字符串中使用
星期日 sunday Sun星期一 monday Mon星期二 Tuesday Tue星期三 Wednesday Wed星期四 Thursday Thu星期五 Fridday Fri星期六 Saturday Sar
時分秒
1天 = 24小時 = 24*60(1440)分 = 24*60*60(86400)秒 = 86,400,000毫秒 1分= 60秒 1小時 = 3600秒 1天 = 86400秒
Date對象返回的是一個毫秒數,經常需要將其換算成時分秒的形式
date = 100000sday(天) = Math.floor(100000/86400) = 1hour(小時) = Math.floor((100000%86400)/3600) = 3minute(分) = Math.floor((100000%3600)/60) = 46second(秒) = Math.floor(100000%60)=40console.log(100000 === 1*86400+ 3*3600+ 46*60+40);//true
以上這篇淺談javascript中關于日期和時間的基礎知識就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答