关于全球时间的一点理解

对程序员而言,获取某个地区的时间可采用下面步骤。

step 1: 获取 Unix 时间戳 // sntp协议

step 2: 转化为某个地区的时间 // setenv(“TZ”,”时区”,1)

unix时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。

UTC 和 GMT 关系:

// UTC:协调世界时间/世界统一时间/世界标准时间
// GMT:格林威治时间[0时区的时间]

广义来说,他们没有什么区别,都是描述位于0时区[英国伦敦格林威治天文台]的时间。往细了说,UTC 更加精准,我们通常采用 UTC 来同步全球时间。下面是它们之间的细节差别:
TC是我们现在用的时间标准,GMT是老的时间计量标准。
UTC是根据原子钟来计算时间,而GMT是根据地球的自转和公转来计算时间,也就是太阳每天经过位于英国伦敦郊区的皇家格林威治天文台的时间就是中午12点。
由于现在世界上最精确的原子钟50亿年才会误差1秒(最精确原子钟问世:50亿年误差一秒),可以说非常精确。
而GMT因为是根据地球的转动来计算时间的,而地球的自转正在缓速变慢,所以使用GMT的话,总有一天,打个比方,中午12点,并不是一天太阳当头照的时候,很可能就是早上或者晚上了。所以说UTC更加精确。

国家时间

中国时间就是 UTC+08.唯一的按照北京时间[东八区]来进行。而其他的国家,则不然。

美国的时间管理

如美国的国家时间管理就较为复杂。下面介绍美国的时间管理,其他国家类似。
美国在地理位置上,按时区从西向东依次分为西部[西八区]、中西部[西七区]、中部[西六区]和东部[西五区].

一方面:每个时区都有它自己的时间。如下:
(1)西部即太平洋时间PST
(2)中西部即山地时间MST
(3)中部即中部时间CST
(4)东部即东部时间EST
同时外加两个时间:
(5)阿拉斯加州时间
(6)夏威夷群岛时间

另一方面: 每个时区又分为夏令时和冬令时[也称非夏令时,也称标准时]:
// 很多国家仍然实行夏令时和非夏令时,中国也曾实行过夏令时和非夏令时,在1992年以后,夏令时便暂停实行。
// 美国夏时制的实行与否,完全由各州、各县自行决定,不由联邦政府统一规定。目前美国绝大部分地区实行夏令时,美国不实行夏令时地区包括:
// 1.亚利桑那州的绝大部分地区
// 2.夏威夷州;
// 3.波多黎各和维京群岛;
// 4.美属萨摩亚、关岛和北马里亚纳群岛。

美国的夏令时: 从每年3月的第二个星期日开始,至每年11月的第一个星期日结束
在夏令时开始,需要将时间向前拨一小时[如果当前时间是8:00,向前拨一小时就是9:00],夏令时结束,需要将时间向后拨一小时[如果当前时间是8:00,向后拨一小时就是7:00]。

区域的时间转化:

如计算北京时间2017.09.20 14:40:00 时候,那么美国时间是多少?
狭义上计算美国时间,通常指的是美国首都华盛顿时间。注意是华盛顿市[位于西五区],而不是华盛顿州[位于西八区].
华盛顿位于西五区,北京位于东八区,有13个时区差,即标准时间差有13个小时。同时华盛顿执行夏令时,故需要向前拨一个小时。
2017.09.20 14:40:00 - 13(小时)[时区差] + 1(小时)[夏令时] = 2017.09.20 2:40:00
所以美国当前时间是2017年9月20日2时40分0秒

其他时间计算类似:
主要考虑:
1.国家/州/地区政策
2.时区

夏令时

时区与 UTC 的偏移量描述:
KLT +14:00 基里巴斯线岛时间
NZDT +13:00 新西兰夏时制
IDLW +12:00 国际日期变更线,西边
NZST +12:00 新西兰标准时间
NZT +12:00 新西兰时间
AESST +11:00 澳大利亚东部标准夏时制 (俄罗斯马加丹时区) 东边(俄罗斯彼得罗巴甫洛夫斯克时区)
ACSST +10:30 中澳大利亚标准夏时制
CADT +10:30 中澳大利亚夏时制
SADT +10:30 南澳大利亚夏时制
AEST +10:00 澳大利亚东部标准时间
EAST +10:00 东澳大利亚标准时间
GST +10:00 关岛标准时间,(俄罗斯符拉迪沃斯托克时区)
LIGT +10:00 澳大利亚墨尔本
SAST +09:30 南澳大利亚标准时间
CAST +09:30 中澳大利亚标准时间
MHT +09:00马绍尔群岛瓜加林岛时间
JST +09:00 日本标准时间,(俄罗斯雅库茨克时区)
KST +09:00韩国标准时间
KST +09:00朝鲜标准时间
AWST +08:00 澳大利亚西部标准时间
CCT +08:00 中国北京时间(俄罗斯伊尔库茨克时区)
WST +08:00 西澳大利亚标准时间
JT +07:30 爪哇时间
ALMST +07:00 阿拉木图 夏令时(俄罗斯泰梅尔半岛时区)
CXT +07:00 澳大利亚圣诞岛时间
MMT +06:30 缅甸时间
ALMT +06:00 哈萨克斯坦阿拉木图 时间(俄罗斯鄂木斯克时区)
IOT +05:00 英属印度洋领地时间(俄罗斯彼尔姆时区)
MVT +05:00 马尔代夫时间
TFT +05:00 法属凯尔盖朗岛时间
AFT +04:30 阿富汗时间
EAST +04:00 马达加斯加塔那那利佛时间 (俄罗斯萨马拉时区)
MUT +04:00 毛里求斯时间
RET +04:00 法属留尼汪岛时间
SCT +04:00 塞舌尔马埃岛时间
IRT,IT +03:30 伊朗时间
EAT +03:00 科摩罗时间
BT +03:00 巴格达时间
EETDST +03:00 东欧夏时制(俄罗斯莫斯科时区)
HMT +03:00 希腊地中海时间
BDST +02:00 英国双重标准时间
CEST +02:00 中欧夏令时
CETDST +02:00 中欧夏时制
EET +02:00 东欧(俄罗斯加里宁格勒时区)
FWT +02:00 法国冬时制
IST +02:00 以色列标准时间
MEST +02:00 中欧夏时制
METDST +02:00 中欧白昼时间
SST +02:00 瑞典夏时制
BST +01:00 英国夏时制
CET +01:00 中欧时间
DNT +01:00 丹麦正规时间
FST +01:00 法国夏时制
MET +01:00 中欧时间
NOR +01:00 挪威标准时间
SWT +01:00 瑞典冬时制
WETDST +01:00 西欧光照利用时间(夏时制)
GMT 0:00 格林尼治标准时间
UT +00:00 全球时间
UTC +00:00 校准的全球时间
ZULU +00:00 和 UTC 相同
WET +00:00 西欧
WAT -01:00 西非时间
FNST -01:00 巴西费尔南多·迪诺罗尼亚岛 夏令时
FNT -02:00 巴西费尔南多·迪诺罗尼亚岛时间
BRST -02:00 巴西利亚夏令时
NDT -02:30 纽芬兰夏时制
ADT -03:00 大西洋夏时制
BRT -03:00 巴西利亚时间
NST,NFT -03:30 纽芬兰(Newfoundland)标准时间
AST -04:00 大西洋标准时间(加拿大)
ACST -04:00 大西洋阿雷格里港夏令时
ACT -05:00 大西洋阿雷格里港 标准时间
EDT -04:00 东部夏时制
CDT -05:00 中部夏时制
EST -05:00 东部标准时间
CST -06:00 中部标准时间
MDT -06:00 山地夏时制
MST -07:00 山地标准时间
PDT -07:00 太平洋夏时制
AKDT -08:00 阿拉斯加白昼时间
PST -08:00 太平洋标准时间
YST -08:00 育空地区标准时
AKST -09:00 阿拉斯加标准时间
HDT -09:00 夏威夷/阿拉斯加夏时制
MART -09:30 马克萨斯群岛时间
AHST -10:00 夏威夷-阿拉斯加标准时间
HST -10:00 夏威夷标准时间
CAT -10:00 中阿拉斯加时间
NT -11:00 阿拉斯加诺姆时间(Nome Time)
IDLE -12:00 国际日期变更线,东边
澳大利亚时区. 澳大利亚时区名和南北美常用的时区名之间有三个冲突:ACST,CST,和 EST。
澳大利亚时区缩写,时区与UTC的偏移量描述:
ACST +09:30 中澳大利亚标准时间
CST +10:30 澳大利亚中部标准时间
EST +10:00 澳大利亚东部标准时间
SAT +09:30 南澳大利亚标准时间
澳大利亚时区. 澳大利亚时区名和马达加斯加塔那那利佛时间冲突:EAST。
澳大利亚时区缩写,时区与UTC的偏移量描述:
EAST +10:00 东澳大利亚标准时间

你可能感兴趣的:(doc)