javascript中有关日期和时间的基础知识

前边的话

  在介绍Date对象从前,首先要先领悟关于日期和时间的片段学问。比如,闰年、UTC等等。浓厚摸底那一个,有助于更好地精晓javascript中的Date对象。本文将介绍javascript关于日期和岁月的基础知识

 

业内时间

  一般而言的专业时间是指GMT和UTC,往日是GMT,现在是UTC

GMT

  格林(格林)尼治标准时间(GMT)是指位于London郊区的皇家格林(格林(Green))尼治天文台的正规时间,因为本初子午线被定义在经过这里的经线

  理论上来说,格林(格林)尼治标准时间的正午是指当阳光横穿格林尼治子午线时(也就是在格林(格林)尼治上空最高点时)的小运。由于地球在它的扁圆形轨道里的移位速度不均匀,这些时刻或者和实际的日光时偏离16分钟

  地球每日的自转是稍稍尴尬的,而且正在缓慢减速。所以,格林尼治时间已经不再被用作专业时间利用。现在的规范时间由世界和谐时间(UTC)提供

UTC

  世界和谐时间(UTC)又称世界统一时间,世界标准时间,国际协调时间,全称Coordinated
Universal
提姆(Tim)e,是以原虎时秒长为根基,在时时上尽可能接近于世界时的一种时光测算体系 

  这套时间序列被接纳于广大互联网和万维网的专业中,中国大洲、中国香港(香江)、中国罗兹、中国山西、蒙古国、新加坡共和国、大马、菲律宾、西澳大喀布尔州的年月与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到31
T           在字符串中直接以“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天,闰年的四月比常年多一天

  闰年的概念是(可被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、四月每月有30天;若是是闰年,三月有29天,否则
,8月有28天。1、3、5、7、8、10、1一月每月有31天

  在javascript中,月的总结从0起始,所以1-18月,分别用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
星期五    Friday        Fri
星期六    Saturday       Sar

 

时分秒

    1天 = 24小时 = 24*60(1440)分 = 24*60*60(86400)秒 = 86,400,000毫秒
    1分= 60秒
    1小时 = 3600秒
    1天 = 86400秒

  Date对象回来的是一个阿秒数,平时需要将其换算成时分秒的款型

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