[Share Experiences] 【小知识】再谈一次时区的问题
Tofloor
poster avatar
enforcee
deepin
2023-03-20 23:21
Author

这个事情大家应该都已经很熟悉了,稍微整理一下,以后如果再有相关的问题就直接把这个帖子贴过去。欢迎纠错和补充内容。

joy

首先要明确的是,时区都是人为规定出来的,是为了使用和沟通方便,各个地方的人们才规定出了不同的时区。当然各位坛友也可以自己发明出一个时区来,但是如果别人都不承认这个时区,这个时区就没有什么意义。所以通常规定时区的都是比较权威的机构。比如说我们用的中国标准时间(通常叫「北京时间」)就是中国官方确定的。而在互联网上,时区是由IANA管理的(这个机构还管IP地址和域名的分配)。IANA曾经是美国政府管辖的,因为互联网最早就是从美国诞生,后来为了国际合作的需要创建了ICANN,并把IANA让渡给了这个国际组织。

IANA创建的时区规范是tz database(通常简称tzdata),在GNU/Linux系统里,这个数据库存放在 /usr/share/zoneinfo/目录中。每个时区是一个用二进制格式存放的文件,同时还有一些辅助的文本文件,比如说 /usr/share/zoneinfo/zone.tab这个文件存放了一些时区的国家或地区代码、坐标、时区名称和注释。我们通常可以选择的时区就是在这个文件中定义的,称为主要(Canonical)时区。还有一些时区虽然在这个文档中没有定义,但是存在相应的时区文件,叫做链接(Link)时区。这些时区一般是曾经有用但是后来被废弃或者改名的,作为向后兼容使用。

tzdata的时区名称通常是用一个城市来命名。在 /usr/share/zoneinfo/Asia/目录下,可以找到5个中国大陆的城市,分别对应民国时代的五个时区。

昆仑时区:Asia/Kashgar 喀什
新藏时区:Asia/Urumqi 乌鲁木齐
陇蜀时区:Asia/Chongqing和Asia/Chungking 重庆
中原标准时区:Asia/Shanghai 上海
长白时区:Asia/Harbin 哈尔滨

在这些时区中,Asia/Kashgar、Asia/Chongqing、Asia/Chungking、Asia/Harbin已经被弃用,除了Asia/Kashgar被Asia/Urumqi替换外,其他的都替换成了Asia/Shanghai。在zone.tab文件中可以看到Asia/Shanghai后面注释了Beijing Time(即北京时间,中国标准时间),Asia/Urumqi后面注释了Xinjiang Time(新疆民间有时候还在用这个时区。有的版本后面还写了Vostok,是一个南极科考站)

为什么「北京时间」的代表城市是上海呢?本人猜测这个很可能是由于历史原因,如上所述,tzdata是按照民国时期提出的五个时区规定的。IANA曾经是美国的组织,美国很长一段时间不承认新中国,虽然北京时间很早就提出了,但是tzdata的设计也可能因此选择了旧标准。而现在虽然中国人也开始参与ICANN的工作,但是互联网已经普及,再去修改可能会造成不利影响,因此采用了这样的折衷方案。

虽然时区的定义是比较灵活的,但是一旦使用互联网发送信息都需要遵循IANA的标准,因此BSD系列和GNU系列都是直接选择了tzdata作为系统内置的时区标准。而Windows等虽然似乎系统时间并不是采用tzdata,但是互联网应用程序仍然需要使用tzdata的。在浏览器控制台可以执行这个代码查看本机的时区:Intl.DateTimeFormat().resolvedOptions().timeZone;

最后说说deepin系统的「北京」时区是怎么回事:这个完全是deepin自己发明创造出来的。因为他不属于通常的互联网标准,如果选择了这个时区,在网络上收发信息时其他计算机就会对你的时区产生疑惑,因此引发一些问题,比如说网页时间和系统差8个小时等等。只需要把时区改成「上海」时区就能解决。其实对deepin的开发者来说,如果实在不喜欢上海,完全可以在控制中心里把Asia/Shanghai起个「北京时间」的名字。楼主不知道他们为什么要乱动tzdata。

Reply Favorite View the author
All Replies
说书人
deepin
2023-03-21 00:20
#1

23 安装时,默认时区是北京,我都要手动改成上海

😂

Reply View the author
那一个夜晚
deepin
2023-03-21 00:49
#2

学习了,就是如果可以自动配置好就更完美了。

Reply View the author
说书人
deepin
2023-03-21 01:06
#3

截图_20230320170447.png

看,23A2 ,时区改成 北京 ,然后浏览器处理上就出问题了

Reply View the author
W2J
deepin
2023-03-21 02:51
#4

截图_dde-control-center_20230320184524.png

别扯有的没的,时区而已,我们的时间显示都是正常的。

与时俱进就好,21世纪谁愿意活在民国时间里嘛

Reply View the author
enforcee
deepin
2023-03-21 03:04
#5
W2J

截图_dde-control-center_20230320184524.png

别扯有的没的,时区而已,我们的时间显示都是正常的。

与时俱进就好,21世纪谁愿意活在民国时间里嘛

如果哪里没看懂我可以给你单独解释

blush

Reply View the author
昨夜的星辰
deepin
2023-03-21 04:07
#6

我试了一下,deepin23A2中系统默认是北京时区,但是浏览器里默认是仍是shanghai,具体看图
image.png

Reply View the author
enforcee
deepin
2023-03-21 04:36
#7
昨夜的星辰

我试了一下,deepin23A2中系统默认是北京时区,但是浏览器里默认是仍是shanghai,具体看图
image.png

可能是不同浏览器的处理方式不同?还是这个问题已经修复了吗

yeah

Reply View the author
说书人
deepin
2023-03-21 04:40
#8

简单总结,设置成北京,可能出问题。设置成上海,一定没问题。

官方处理思路也是,不管界面是北京还是啥城市,后台一律是上海。

Reply View the author
说书人
deepin
2023-03-21 18:41
#9

edge浏览器与系统时间不一致

看,又有遇到时区相关问题的了,都是 北京 时区导致的

Reply View the author
阿尼樱奈奈
deepin
2023-03-21 19:17
#10

怪不得会这样!

Reply View the author
辉辉
deepin
2023-03-23 07:41
#11
enforcee

可能是不同浏览器的处理方式不同?还是这个问题已经修复了吗

yeah

20.8同样存在,系统自带浏览器正常,EDGE有时差。可能是浏览器处理方式不一样。

Reply View the author
沈拙言
deepin
2023-06-28 00:47
#12

学到老活到老agree

Reply View the author
vivian_me
deepin testing team
2023-06-28 17:53
#13

这个分享不错,我可以分享到wiki里吗?

Reply View the author
enforcee
deepin
2023-06-28 19:07
#14
vivian_me

这个分享不错,我可以分享到wiki里吗?

可以

blush

Reply View the author