javascript中关于日期和时间的基础知识
前面的话
在介绍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到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天,闰年的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 = 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中关于日期和时间的基础知识的更多相关文章
- JavaScript 中的日期和时间
前言 本篇的介绍涵盖以下部分: 1. 时间标准指的是什么?UCT和GMT 的概念.关联和区别? 2. 时间表示标准有哪些? 3. JS 中时间的处理 日期时间标准 日期的标准就不多说了 -- 公元纪年 ...
- 谈谈javascript中的日期Date对象
一.日期对象 在javascript中并没有日期型的数据类型,但是提供了一个日期对象可以操作日期和时间. 日期对象的创建: new Date();二.将日期对象转换为字符串 将日期对象转换为字 ...
- 【转】C/C++中的日期和时间 TIME_T与STRUCT TM转换——2013-08-25 16
http://www.cnblogs.com/Wiseman/archive/2005/10/24/260576.html 摘要: 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的 ...
- Day029 JDK8中新日期和时间API (二)
# JDK8中新日期和时间API (二) Instant介绍 Instant:时间线上的一个瞬时点. 这可能被用来记录应用程序中的事件时间 戳. 在处理时间和日期的时候,我们通常会想到年,月,日,时, ...
- PHP中的日期和时间
日期和时间 1.UNIX时间戳 以32位整数表示的格林威治标准时间 这个UNIX时间戳整数是从1970年1月1日0时0分0秒(计算机元年)到现在的秒数 ...
- Java中的日期和时间
Java中的日期和时间 Java在java.util包中提供了Date类,这个类封装了当前的日期和时间. Date类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date() 下面的构 ...
- MySQL中的日期和时间:使用和说明,以及常用函数
1.首先需要注意: 1.1 MySQL中把日期和时间是分开的. 以字符串2007-12-31 00:59:59为例: 日期部分:2007-12-31.这部分也可以叫做一个日期表达式. 时间部分:00: ...
- Day029 JDK8中新日期和时间API (四)
JDK8中新日期和时间API 其他的一些API ZoneId:该类中包含了所有的时区信息,一个时区的ID,如 Europe/Paris ZonedDateTime:一个在ISO-8601日历系统时区的 ...
- JavaScript中的日期时间函数
1.Date对象具有多种构造函数,下面简单列举如下 new Date() new Date(milliseconds) new Date(datestring) new Date(year, mont ...
随机推荐
- loading动画效果记录
看到好多网页都有一个炫酷的loading动画,以前不知道怎么实现的.今天学习了一下,发现其实也很简单. 首先在学习的时候偶然遇到一个pace.js的库,非常好用.优点是,不需要挂接到任何代码,自动检测 ...
- Restore Oracle database to another server
1. Copy or remotely mount the backupset folder from the source server to the target server 2. On the ...
- 动态代理模式和AOP探究
java强大的反射机制给动态代理带来了可能.能够自由穿梭在类与方法之间.简直神通广大. 动态代理的一个小例子,顺便看看神奇的AOP是如何实现的.代码如下: 首先声明的是一个接口Dog类 package ...
- [Java基础]代码块及java反编译
块的作用域: 块(即复合语句)是指一对花括号括起来的若干条简单的java语句.块确定了变量的作用域.一个块可以嵌套在另一个块中.但是,在嵌套的两个块中声明同名的变量时应注意,块中变量申明在块外变量 ...
- iOS 笔记
1. 使用断言NSAssert()调试程序错误 NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续 ...
- 解决Ubuntu发热量大的问题
转自:http://blog.csdn.net/tracker_w/article/details/8801971 用Ubuntu 的朋友应该都有体会,开机不久风扇就开始狂转,本本也会很热.据说是双显 ...
- Security Configuration and Auditing Scripts for Oracle E-Business Suite (文档 ID 2069190.1)
This document provides the security configuration and auditing scripts for Oracle E-Business Suite. ...
- C++混合编程之idlcpp教程Python篇(9)
上一篇在这 C++混合编程之idlcpp教程Python篇(8) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相比,工程PythonTutorial7中除了四个文件PythonTu ...
- [ASE]项目介绍及项目跟进——TANK BATTLE·INFINITE
童年的记忆,大概是每周末和小伙伴们围坐在电视机前,在20来寸的电视机屏幕里守卫着这个至今都不知道是什么的白色大鸟. 当年被打爆的坦克数量估计也能绕地球个三两圈了吧. 十几年过去了,游戏从2D-3D,画 ...
- Android 自定义View 总结
Android系统本身给我们提供十分丰硕的组件让我们实现包罗万象的UI效果,与此同时,我们也能够非常方便实现各种方法来实现各种强大的功能.通过继承现有的UI控件,我们也能够拓展现有的功能.我们也能够完 ...