【写在最前】
我们平时会接触各种计算机时间的概念,最常见的有GMT,UTC,CST等。
很多小白傻傻分不清楚他们之间的区别与联系,通过本文知识,让我们花5分钟时间彻底搞懂他,相信聪明的你,看完一定会有收获!
# GMT
即:格林尼治时间(另有格林威治时间一说)
以本初子午线为基础,精确度相对低。
注意事项:
因为地球每天的自转是不规则的(正在缓慢减速)所以,格林尼治时间的精确度会越来越低。
# UTC
即:世界协调时(Universal Time Coordinated的缩写)
以原子时钟长为基础,比GMT格林威治时更加科学更加精确。
UTC是国际无线电咨询委员会制定和推荐的,若与GMT时差大于0.9秒,则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。
UTC时间格式为:YYYY-MM-DDThh:mm:ssZ。例如,2014-11-11T12:00:00Z(为北京时间2014年11月11日20点0分0秒)
中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。
注意事项:
1)目前UTC与GMT 相差为0.9秒,故二者可以基本视为一致。
我们一般认为GMT和UTC是一样的,都与英国伦敦的本地时相同。
2)早期的XP系统中,默认时间格式是GMT。而到了Win7之后,默认时间格式已经改成了UTC
3)阿里云API接口编程中,全部都是UTC
# UNIX时间戳(timestamp)
计算机中的UNIX时间戳,是以GMT/UTC时间「1970-01-01T00:00:00」为起点,到当前具体时间的秒数(不考虑闰秒)。这样做的目的,主要是通过“整数计算”来简化计算机对时间操作的复杂度。
无论何种编程语言,基本都有获取unix时间戳的系统方法。
注意事项:
如果开发的软件系统仅仅在国内用,用timestamp没有太大问题(因为大家的linux服务器的时区是一样的)
如果软件系统需要跨国服务,则必须用UTC(比如阿里云API),否则就会因为服务器的UTC时区不同,导致timestamp结果值混乱
# CST
这个代号缩写,并不是一个统一标准,目前,可以同时代表如下 4 个不同版本的时区概念(要根据上下文语义加以区分):
1)China Standard Time 中国标准时区 (UTC+8)
2)Cuba Standard Time 古巴标准时区 (UTC-4)
3)Central Standard Time (USA) 美国中央时区 (UTC-6)
4)Central Standard Time (Australia) 澳大利亚中央时区(UTC+9)