CST/CET/UTC/GMT/DST,Unix时间戳几种常见时间概述与关系

1、UTC:

Universal Time Coordinated 协调世界时,又称世界标准时间 多数的两地时间表都以GMT来表示,但也有些两地时间表上看不到GMT字样,出现的反而是UTC这3个英文字母,究竟何谓UTC?事实上,UTC指的是Coordinated Universal Time- 世界协调时间(又称世界标准时间、世界统一时间),是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以「世界标准时间」的角度来说,UTC比GMT来得更加精准。其误差值必须保持在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。

2、GMT:

Greenwich Mean Time 格林尼治平均时 UTC和GMT都与英国伦敦的本地时相同,所以程序中UTC与GMT没什么不同。意思UTC=GMT是相等的 十七世纪,格林威治皇家天文台为了海上霸权的扩张计画而进行天体观测。1675年旧皇家观测所(Old Royal Observatory) 正式成立,到了1884年决定以通过格林威治的子午线作为划分地球东西两半球的经度零度。观测所门口墙上有一个标志24小时的时钟,显示当下的时间,对全球而言,这里所设定的时间是世界时间参考点,全球都以格林威治的时间作为标准来设定时间,这就是我们耳熟能详的「格林威治标准时间」(Greenwich Mean Time,简称G.M.T.)的由来,标示在手表上,则代表此表具有两地时间功能,也就是同时可以显示原居地和另一个国度的时间。

3、Unix时间戳:

在计算机中看到的UTC时间都是从(1970年01月01日 0:00:00)开始计算秒数的。所看到的UTC时间那就是从1970年这个时间点起到具体时间共有多少秒。 这个秒数就是Unix时间戳。

4、CST时间:

CST却同时可以代表如下 4 个不同的时区: Central Standard Time (USA) UT-6:00 Central Standard Time (Australia) UT+9:30 China Standard Time UT+8:00 Cuba Standard Time UT-4:00

5、CET

(英語:Central European Time,CET)欧洲中部时间是比世界标准时间(UTC)早一个小时的时区名称之一。它被大部分欧洲国家和部分北非国家采用。冬季时间为UTC+1,夏季欧洲夏令时为UTC+2。

6、DST:

Daylight Saving Time「夏日节约时间」 是指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用,在英国则称为夏令时间(Summer Time)。这个构想于1784年由美国班杰明·富兰克林提出来,1915年德国成为第一个正式实施夏令日光节约时间的国家,以削减灯光照明和耗电开支。自此以后,全球以欧洲和北美为主的约70个国家都引用这个做法。目前被划分成两个时区的印度也正在商讨是否全国该统一实行夏令日光节约时间。欧洲手机上也有很多GSM系统的基地台,除了会传送当地时间外也包括夏令日光节约时间,做为手机的时间标准,使用者可以自行决定要开启或关闭。值得注意的是,某些国家有实施「夏日节约时间」的制度,出国时别忘了跟随当地习惯在表上调整一下,这可是机械表没有的功能设计哦!

7、关系:

UTC=GMT CET=UTC/GMT + 1小时 CST=UTC/GMT +8 小时 CST=CET+9


今天在配合java人员做时间处理时候遇到一个奇怪的问题,在服务器端通过 java# 获取当前时间为 Wed Mar 04 10:00:00 CST 2015, 意思就是2015年3月4日的10点整时间 转化为 GMT时间为:04 Mar 2015 02:00:00 GMT,也就是说GMT时间加上 8 个小时等于CST表示的时间, 那这个CST不就是北京时间么,因为我们是在东八区的。

一切看起来很正常,不过在客户端用JavaScript解析这个时间就有问题了: // Thu Mar 05 2015 16:00:00 GMT+0800 var d=new Date(‘Wed Mar 04 10:00:00 CST 2015’).toGMTString();

好奇怪,这次GMT和CST表示的时间居然相差整整6个小时? 怎么又整出6小时? 可以直接参看第5点可明白理论上 cst=gmt+8 前面提到的通过 Java 获取的CST时间用的是China StandardTime,而客户端JavaScript则默认采用的是美国的中部时间 Central Standard Time (USA) UT-6:00。所以这时js获取的时间 cst-6=gmt 或者说 cst=gmt+6;

可见,在以后的编程中为了避免错误,还是不要使用CST时间,而尽量采用GMT时间。


参考:

http://blog.csdn.net/kongjiea/article/details/44061117

unix  Unix时间戳  CST  CET  UTC  GMT  DST