JavaScript 中的日期和时间及表示标准介绍


Posted in Javascript onAugust 21, 2013

前言

本篇的介绍涵盖以下部分:

1. 时间标准指的是什么?UCT和GMT 的概念、关联和区别?

2. 时间表示标准有哪些?

3. JS 中时间的处理

日期时间标准

日期的标准就不多说了 -- 公元纪年

是为纪念犹太人耶稣(基督)的诞生。他诞生的那一年为公元1年,诞生之前的年份称为“公元前n年”

简单来说,时间的标准就是以什么时间为起点开始计时。对于年份来说,举例来说,如果不使用公元纪年法,估计全世界交流起来就困难重重了(新中国54年,估计很把很多老外整晕)

时间标准其实挺多的。

原子时 · 协调世界时(UTC) · 格林尼治平时(GMT) · 地球时(TT) · 力学时(DT)

在程序开发中甚至日常生活中,比较常见的就是UTC和GMT了。

UTC是协调世界时(Universal Time Coordinated)英文缩写,是由国际无线电咨询委员会规定和推荐,并由国际时间局(BIH)负责保持的以秒为基础的时间标度。UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示.北京时间比UTC时间早8小时,以1999年1月1日0000UTC为例,UTC时间是零点,北京时间为1999年1月1日早上8点整。

GMT(Greenwich Mean Time)是格林尼治平时:
由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的平太阳时称为世界时(UT0),又叫格林尼治平时(GMT)。

为了确保协调世界时与世界时(UT1)相差不会超过0.9秒,有需要时便会在协调世界时内加上正或负闰秒。因此协调世界时与国际原子时(TAI)之间会出现若干整数秒的差别。位于巴黎的国际地球自转事务中央局(IERS)负责决定何时加入闰秒。

两者的关系:

UTC = GMT +/- 0.9 s
因此 UTC 间中需要进行 "闰秒" 以控制两者相差。

以上介绍可以统统不看, 一言之,UTC和 GMT就是世界标准时间, 两者的差距很小。

日期时间表示标准

日期和时间的计算标准有了。但是表示上却也可以千差万异。

2013/08/16

08/16/2013

13/08/16

.。。。。。

于是,国际标准化组织ISO 出来了,制定了一个8601系列 《数据存储和交换形式·信息交换·日期和时间的表示方法》。

目前是第三版ISO8601:2004以替代第一版ISO8601:1988与第二版ISO8601:2000。

主要的部分列一下:

1. 日期表示法

年为4位数,月为2位数,月中的日为2位数,例如,日期(2013年8月16日)可表示为2013-08-16,或20130816。

2. 日历星期和日表示法

可以用2位数表示本年内第几个日历星期;

每个日历星期从星期一开始,星期日为第7天

3. 时间表示方法

小时、分和秒都用2位数表示,对UTC时间最后加一个大写字母Z,其他时区用实际时间加时差表示。如UTC时间下午2点30分5秒表示为14:30:05Z或143005Z,当时的北京时间表示为22:30:05+08:00或223005+0800,也可以简化成223005+08。

4. 日期和时间组合表示法

合并表示时,要在时间前面加一大写字母T,如要表示北京时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00或20040503T173008+08。

需要特别提出来说的是:

星期天在西方是作为一个星期的第一天

在中国则是最后一天。

也就是所ISO标准和中国的习惯是一致的。但是目前许多软件、语言什么的都是国外开发的,时间上还是延续了他们自己的习惯。

Javascript 中的日期时间

方法 描述 FF IE
Date() 返回当日的日期和时间。 1 3
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 1 3
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 1 3
getMonth() 从 Date 对象返回月份 (0 ~ 11)。 1 3
getFullYear() 从 Date 对象以四位数字返回年份。 1 4
getYear() 请使用 getFullYear() 方法代替。 1 3
getHours() 返回 Date 对象的小时 (0 ~ 23)。 1 3
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。 1 3
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。 1 3
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。 1 4
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。 1 3
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。 1 3
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。 1 4
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。 1 4
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。 1 4
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。 1 4
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。 1 4
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。 1 4
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。 1 4
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。 1 4
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。 1 3
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。 1 3
setMonth() 设置 Date 对象中月份 (0 ~ 11)。 1 3
setFullYear() 设置 Date 对象中的年份(四位数字)。 1 4
setYear() 请使用 setFullYear() 方法代替。 1 3
setHours() 设置 Date 对象中的小时 (0 ~ 23)。 1 3
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。 1 3
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。 1 3
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。 1 4
setTime() 以毫秒设置 Date 对象。 1 3
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。 1 4
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。 1 4
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。 1 4
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。 1 4
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。 1 4
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。 1 4
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。 1 4
toSource() 返回该对象的源代码。 1 -
toString() 把 Date 对象转换为字符串。 1 4
toTimeString() 把 Date 对象的时间部分转换为字符串。 1 4
toDateString() 把 Date 对象的日期部分转换为字符串。 1 4
toGMTString() 请使用 toUTCString() 方法代替。 1 3
toUTCString() 根据世界时,把 Date 对象转换为字符串。 1 4
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。 1 3
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。 1 3
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。 1 3
UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。 1 3
valueOf() 返回 Date 对象的原始值。

以上也可以统统不看, 需要特别说的是:

Javascript 把 星期天 作为一周的开始。 使用getDay() 这个方法时就得小心了。

getDay() 返回 0-6 之间的数值, 2013/08/18 是星期天, 返回值是 0

<!--Add by oscar999--> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<META NAME="Author" CONTENT="oscar999"> 
<script> 
var date = new Date("2013/08/18"); 
alert(date.getDay()); 
</script> 
</HEAD> <BODY> 
</BODY> 
</HTML>
Javascript 相关文章推荐
jquery+css+ul模拟列表菜单具体实现思路
Apr 15 Javascript
jQuery中读取json文件示例代码
May 10 Javascript
js charAt的使用示例
Feb 18 Javascript
js实现防止被iframe的方法
Jul 03 Javascript
Bootstrap 组件之按钮(二)
May 11 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
Jul 24 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
Jan 10 Javascript
详解JavaScript对象的深浅复制
Mar 30 Javascript
JavaScript字符串_动力节点Java学院整理
Jun 27 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
Oct 26 Javascript
原生JavaScript实现留言板
Jan 10 Javascript
原生JS实现音乐播放器
Jan 26 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
Aug 21 #Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
Aug 21 #Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 #Javascript
jquery.qrcode在线生成二维码使用示例
Aug 21 #Javascript
jquery设置控件位置的方法
Aug 21 #Javascript
获取表单控件原始(初始)值的方法
Aug 21 #Javascript
Js放到HTML文件中的哪个位置有什么区别
Aug 21 #Javascript
You might like
一个odbc连mssql分页的类
2006/10/09 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python多线程http压力测试脚本
2019/06/25 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
Python实现结构体代码实例
2020/02/10 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
Python 忽略文件名编码的方法
2020/08/01 Python
Python如何给函数库增加日志功能
2020/08/04 Python
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
纺织工程专业推荐信
2014/09/08 职场文书
刑事附带民事代理词
2015/05/25 职场文书
总经理致辞
2015/07/29 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS