博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中关于日期和时间的基础知识
阅读量:5794 次
发布时间:2019-06-18

本文共 3206 字,大约阅读时间需要 10 分钟。

前面的话

  在介绍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星期五    Friday        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

转载于:https://www.cnblogs.com/xiaohuochai/p/5663214.html

你可能感兴趣的文章
慎用!BLEU评价NLP文本输出质量存在严重问题
查看>>
JAVA的优势就是劣势啊!
查看>>
ELK实战之logstash部署及基本语法
查看>>
LINUX下防恶意扫描软件PortSentry
查看>>
如何 debug Proxy.pac文件
查看>>
Python 学习笔记 - 面向对象(特殊成员)
查看>>
Puppet 配置管理工具安装
查看>>
Bug多,也别乱来,别被Bug主导了开发
查看>>
高性能的MySQL(5)创建高性能的索引一B-Tree索引
查看>>
图片变形的抗锯齿处理方法
查看>>
Effective C++ Item 32 确保你的 public 继承模子里出来 is-a 关联
查看>>
phpstorm安装laravel-ide-helper实现自动完成、代码提示和跟踪
查看>>
python udp编程实例
查看>>
TortoiseSVN中图标的含义
查看>>
Tasks and Back stack 详解
查看>>
成功的背后!(给所有IT人)
查看>>
在SpringMVC利用MockMvc进行单元测试
查看>>
Nagios监控生产环境redis群集服务战
查看>>
Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
查看>>
Java利用httpasyncclient进行异步HTTP请求
查看>>