淺談javascript中關于日期和時間的基礎知識
來源:易賢網(wǎng) 閱讀:552 次 日期:2016-07-28 14:31:49
溫馨提示:易賢網(wǎng)小編為您整理了“淺談javascript中關于日期和時間的基礎知識”,方便廣大網(wǎng)友查閱!

下面小編就為大家?guī)硪黄獪\談javascript中關于日期和時間的基礎知識。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。

前面的話

在介紹Date對象之前,首先要先了解關于日期和時間的一些知識。比如,閏年、UTC等等。深入了解這些,有助于更好地理解javascript中的Date對象。本文將介紹javascript關于日期和時間的基礎知識

標準時間一般而言的標準時間是指GMT和UTC,以前是GMT,現(xiàn)在是UTC

GMT

格林尼治標準時間(GMT)是指位于倫敦郊區(qū)的皇家格林尼治天文臺的標準時間,因為本初子午線被定義在通過那里的經(jīng)線

理論上來說,格林尼治標準時間的正午是指當太陽橫穿格林尼治子午線時(也就是在格林尼治上空最高點時)的時間。由于地球在它的橢圓軌道里的運動速度不均勻,這個時刻可能和實際的太陽時相差16分鐘

地球每天的自轉(zhuǎn)是有些不規(guī)則的,而且正在緩慢減速。所以,格林尼治時間已經(jīng)不再被作為標準時間使用?,F(xiàn)在的標準時間——世界協(xié)調(diào)時間(UTC)提供

UTC

世界協(xié)調(diào)時間(UTC)又稱世界統(tǒng)一時間,世界標準時間,國際協(xié)調(diào)時間,全稱Coordinated Universal Time,是以原子時秒長為基礎,在時刻上盡量接近于世界時的一種時間計量系統(tǒng)

這套時間系統(tǒng)被應用于許多互聯(lián)網(wǎng)和萬維網(wǎng)的標準中,中國大陸、中國香港、中國澳門、中國臺灣、蒙古國、新加坡、馬來西亞、菲律賓、西澳大利亞州的時間與UTC的時差均為+8,也就是UTC+8

在軍事中,協(xié)調(diào)世界時區(qū)會使用“Z”來表示。又由于Z在無線電聯(lián)絡中使用“Zulu”作代稱,協(xié)調(diào)世界時也會被稱為"Zulu time"

日期時間字符串格式

ECMAScript定義了一個基于簡化的ISO8601擴展格式的日期時間的字符串互換格式

日期時間完整格式為:  YYYY-MM-DDTHH:mm:ss.sssZ

[注意]前置0不能省略,否則在完整格式的情況下會報錯

YYYY    公歷中年的十進制數(shù)字,如果這個參數(shù)值在0-99之間,則向它加上1900

-      在字符串中直接以“-”(破折號)出現(xiàn)兩次

MM     一年中的月份,從01(一月)到12(十二月)

DD     月份中的日期,從01到31

T      在字符串中直接以“T”出現(xiàn),用來表明時間元素的開始

HH     用兩個十進制數(shù)字表示的,自午夜0點以來的小時數(shù)

:      在字符串中直接以“:”(冒號)出現(xiàn)兩次

mm     是用兩個十進制數(shù)字表示的,自小時開始以來的分鐘數(shù)

ss     是用兩個十進制數(shù)字表示的,自分開始以來的秒數(shù)

.      在字符串中直接以“.”(點)出現(xiàn)

sss     是用三個十進制數(shù)字表示的,自秒開始以來的毫秒數(shù)

Z      是時區(qū)偏移量,由(“Z”(指UTC)或“+”或“-”)和后面跟著的時間表達式hh:mm組成

只表示日期的格式:  YYYY YYYY-MM YYYY-MM-DD

[注意]所有數(shù)字必須是10進制的。如果缺少MM或DD字段,用“01”作為它們的值。如果缺少mm或ss字段,用“00”作為它們的值,對于缺少的sss用“000”作為它的值。對于缺少的時區(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個月,其中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中,月份的簡寫經(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

星期

星期是從星期日開始,到星期六結(jié)束,分別用0-6來表示

在javascript中,各星期的簡寫經(jīng)常在日期字符串中使用

星期日  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對象返回的是一個毫秒數(shù),經(jīng)常需要將其換算成時分秒的形式

date = 100000s

day(天) = Math.floor(100000/86400) = 1

hour(小時) = 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中關于日期和時間的基礎知識就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:淺談javascript中關于日期和時間的基礎知識
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權所有:易賢網(wǎng)