前言 本篇的介绍涵盖以下部分:
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 中的日期时间
以上也可以统统不看, 需要特别说的是:
Javascript 把 星期天 作为一周的开始。 使用getDay() 这个方法时就得小心了。
getDay() 返回 0-6 之间的数值, 2013/08/18 是星期天, 返回值是 0
New Document
<script> <BR>var date = new Date("2013/08/18"); <BR>alert(date.getDay()); <BR></script>