JavaScript 日期和时间基础知识
前言
学习Date对象之前,首先要先了解关于日期和时间的一些知识。比如,闰年、UTC等等。深入了解这些,有助于更好地理解javascript中的Date对象。
标准时间
一般而言的标准时间是指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到31
T              在字符串中直接以“T”出现,用来表明时间元素的开始
HH            用两个十进制数字表示的,自午夜0点以来的小时数
:               在字符串中直接以“:”(冒号)出现两次
mm           是用两个十进制数字表示的,自小时开始以来的分钟数
ss             是用两个十进制数字表示的,自分开始以来的秒数
.               在字符串中直接以“.”(点)出现
sss           是用三个十进制数字表示的,自秒开始以来的毫秒数
Z              是时区偏移量,由(“Z”(指UTC)或“+”或“-”)和后面跟着的时间表达式hh:mm组成
[注意]所有数字必须是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'
}
月日
一年有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 = 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
JavaScript 日期和时间基础知识的更多相关文章
- day29—JavaScript中DOM的基础知识应用
		转行学开发,代码100天——2018-04-14 JavaScript中DOM操作基础知识即对DOM元素进行增删改操作.主要表现与HTML元素的操作,以及对CSS样式的操作.其主要应用知识如下图: 通 ... 
- javascript中BOM部分基础知识总结
		一.什么是BOM BOM(Browser Object Document)即浏览器对象模型. BOM提供了独立于内容 而与浏览器窗口进行交互的对象: 由于BOM主要用于管 ... 
- JavaScript中BOM的基础知识总结
		一.什么是BOM BOM(Browser Object Model)即浏览器对象模型. BOM提供了独立于内容 而与浏览器窗口进行交互的对象: 由于BOM主要用于管理窗口 ... 
- JavaScript学习总结(基础知识)
		js代码引入 方式1: <script> alert('欢迎来到德玛西亚!') </script> 方式2:外部文件引入 src属性值为js文件路径 <script sr ... 
- 浅谈:javascript的面向对象编程之基础知识的介绍
		在进入javascript的面对对象之前,我们先来介绍一下javascript的几个概念. 1.javascript的面向对象的基本概念 function aa(){ } /* * 这里的aa,在我们 ... 
- javascript中DOM部分基础知识总结
		1.DOM介绍 1.1 DOM概念 文档对象模型(Document Object Model),它定义了访问和处理HTML文档的标准方法.现在我们主要接触到的是HTML DOM. ... 
- JavaScript大杂烩0 - WEB基础知识
		1. 协议小结:HTTP协议与TCP/IP协议 现代Web应用开发的基础是HTTP协议,那么HTTP协议与我们熟知的TCP/IP协议有什么关系呢? 这个要从网络通信模型说起,简单的说,计算机通信就像两 ... 
- JavaScript进阶【一】JavaScript模块化开发的基础知识
		//模块化的最初写法 //1.最初写法 //下面的m1和m2就组成了一个模块 //缺点:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系. f ... 
- JavaScript中数组的基础知识和相关方法
		数组基础 数组是大多数语言里面最常见的一种数据结构,它是一个有序的值列表. 创建数组 1.创建字面量数组 let arr=[]; 2.创建构造函数数组 let arr=new Array(); 注 ... 
随机推荐
- SQLServer之创建Transact-SQL DDL触发器
			DDL触发器原理 DDL 触发器用于响应各种数据定义语言 (DDL) 事件. 这些事件主要与以关键字 CREATE.ALTER.DROP.GRANT.DENY.REVOKE 或 UPDATE STAT ... 
- yum自动安装mysql
			1.安装客户端和服务器端查看CentOS自带mysql: yum list installed | grep mysql卸载CentOS系统自带mysql数据库? yum -y remove mysq ... 
- Django 路由层(urlconf)
			Django 的路由层(URLconf) URL配置(conf)就像是Django所支撑的网站的目录; 本质就是:URL与调用该URL执行的视图函数的映射表; 通俗的讲:就是用户使用哪个url,URL ... 
- applicationSettings设置和appsttings
			applicationSettings 可以和sttings一样在配置文件中,设置参数.支持定义参数的类型“serializaAs=string”,并可以使用 . 语法. 可以使用.语法 
- SpringBoot学习笔记(2) Spring Boot的一些配置
			外部配置 Spring Boot允许使用properties文件.yaml文件或者命令行参数作为外部配置 使用@Value注解,可以直接将属性值注入到你的beans中,并通过Spring的Enviro ... 
- centos7下kubernetes(16。kubernetes-滚动更新)
			滚动更新:一次只更新一小部分副本,成功后,在更新更多的副本,最终完成所有副本的更新. 滚动更新的最大好处是零停机,整个更新过程始终有副本在运行,从而保证了业余的连续性 下面部署三个副本的应用,出事镜像 ... 
- R语言学习——向量
			以下为在RStudio中输入 #为注释符,其后内容程序不执行 > #向量是用于储存数值型.字符型或者逻辑型数据的一维数组.执行组合功能的函数c()可用来创建向量.示例如下: > a< ... 
- Linux之指令 重定向 文件覆盖>和文件追加>>
			指令>和>>区别 指令 > : 如果文件存在,将原来文件的内容覆盖:原文件不存在则创建文件,再添加信息. 指令 >>:不会覆盖原文件内容,将内容追加到文件的尾部. ... 
- jenkins编译打包nodejs
			第一步 安装nodejs插件 第二步 在全局配置管理里面添加 nodejs配置 第三步 新建任务,从git上面拉取代码 cd /opt/tomcat7/bin/workspace/confdev #进 ... 
- AI pytorch
			pytorch 参考链接: https://pytorch.org 
