如果有人问你说现在几点? 你看了看表回答他说晚上8点了. 这样回答看上去没有什么问题,但是如果问你的这个人在欧洲的话那么你的回答就会让他很疑惑,因为他那里还太阳当空呢!这里就有产生了一个如何定义时间的问题. 因为在地球环绕太阳旋转的24个小时中,世界各地日出日落的时间是不一样的.所以我们才有划分时区(timezone) 的必要,也就是把全球划分成24个不同的时区. 所以我们可以把时间的定义理解为一个时间的值加上所在地的时区(注意这个所在地可以精确到城市)
GMT 格林威治时间,0时区时间
UTC (coordinated Universal Time): 协和标准时间,利用 Atomic Clock 为基准定义出来的正确时间(世界统一时间,世界标准时间,国际协调时间)
CST Chinese Standard Time,北京时间
Atomic Clock: 现在计算时间最准确的是使用原子震荡周期所计算的物理时钟(Atomic Clock),因此也被定义为标准时间(International Atomic Time)
Linux发行版使用了时区信息数据库(tzdatabase),这是一个被广泛应用的、开放的、维护着世界时区信息的数据库。
数据库里的时区不仅是时间相同的地区,还要按照行政区划进行划分,另外需要记录历史上的变化,因此划分比一般的时区图详细的多。
Linux发行版中的城市选择来自于tzdatabase中独特的命名方法,一般包括区域、地点两级,区域一般是大洲大洋,地点则一般为本时区中最具代表性(通常也就是最大)的城市名,写作「[区域]/[地点]」,如: America/New_York 。
对于中国大陆的几个时区,也基本遵循了此规定,重庆、哈尔滨、喀什、上海、乌鲁木齐分别对应原陇蜀时区、长白时区、昆仑时区、中原时区、回藏时区。
tzdatabase 中的中国大陆地区划分为五个区域,分别是:
1. Asia/Chongqing
2. Asia/Harbin
3. Asia/Kashgar
4. Asia/Shanghai
5. Asia/Urumqi
这五个时区的时间均为中国标准时间(北京时间,UTC+8)。
这五个时区来自于曾经的中国时区,是在 1918 年由民国政府划分的:
1. 中原(标准)时区:GMT+8 以东经120度为中央子午线。
2. 陇蜀时区:GMT+7 以东经105度为中央子午线。
3. 回藏时区「新藏时区」:GMT+6 以东经90度为中央子午线。
4. 昆仑时区:GMT+5:30 &nbs