程序人生 - 为何没有 Asia/Beijing 时区?

简介: 程序人生 - 为何没有 Asia/Beijing 时区?

Asia/Beijing 这个时区是消失了么?

@tinyfool 对啊,我就奇怪为什么北京时间就要用上海和重庆……

@tinyfool @CatChen我所疑惑的就是为什么不统一一下呢,很容易产生困惑噢~

 

开发者都知道

想必做开发的,尤其是PHP或Java的,很多年前就都会注意到这个情况:时区中没有asia/beijing,只有asia/shanghai和asia/chongqing。以前看到不少这种抱怨的帖子,毕竟和心理预期不一样,还会导致程序出错或程序员浪费时间调试。大家会猜测这是不是老外故意和北京捣乱。我认为不是。

 

投诉BUG

有国人愤而投诉Ubuntu

for i'm from P.R.China and BeiJing is our capital city, we are always using BeiJing time zone. please fix it.

甚至投诉Sun说“The Time Zone id name for PRC is wrong”:it is better if there exists a id name as "Asia/Beijing" for PRC.

Ubuntu认为:首先这个问题不归他。其次维护这个将会是易错的,而且容易与其他软件不兼容。

Sun的回答是“It is not wrong”。对他给出的理由,还是有说服力的:

首先,我想确这一点,在JDK诞生之前,国际标准时区就没有Asia/Beijing,只有Asia/Shanghai或Asia/Chongqing?(One thing I want to be confirmed here is, before JDK's birth, the international standard TimeZone name for PRC is Asia/Shanghai or Asia/Irkutsk? not Asia/Beijing?)

其次,在1986年到1991年期间,中华人民共和国采用了夏时制。为了能够处理任何给定的时间格式,时区就需要知道是否历史上使用夏令时。daylight就是表明这一点的字段。因此,在JDK中使用daylight字段是不对的。

但根据他后面说的,我认为sun似乎有必要更改时区,毕竟sun认为时区的api应该支持同时代的时区。Asia/Shanghai和Asia/Chongqing代表中国,都是国民党时期的老黄历了:

sun的策略是只支持同时代(contemporary)的时区,而不是历史上(historical)的某一个时区。TimeZone和DateFormat code只应该对于当前的时区工作。最后,Fixed in JDK1.2 FCS-M, but the value is Asia/Shanghai, better one is Asia/Beijing.

 

小结

Anyway,有没有asia/beijing时区,开发都没影响,保持各种系统和软件的兼容可能更重要吧。谁知道更多呢?请留言。

目录
相关文章
|
2月前
|
Linux 数据库 容器
Centos中将UTC的时区改为CTS时区
通过以上步骤,您就可以顺利地在CentOS系统中完成时区从UTC到中国标准时间(Asia/Shanghai)的更改了。
108 1
|
7月前
|
Java
java 时区转换日期转换:东八区转为UTC零时区
java 时区转换日期转换:东八区转为UTC零时区
276 0
r2dbc指定时区问题
r2dbc指定时区问题
94 0
|
关系型数据库 MySQL Java
TimeZone-datetime在JVM时区和MySQL Session时区的转换
TimeZone-datetime在JVM时区和MySQL Session时区的转换
196 0
解决Linux中make死循环问题 / 设置时区为‘Asia/Shanghai‘
解决Linux中make死循环问题 / 设置时区为‘Asia/Shanghai‘
|
Linux
Linux:查看时区和修改时区
Linux:查看时区和修改时区
453 0
|
Docker 容器
时区问题
时区问题
126 0
时区
关于计算时区
318 1
[20180403]关于时区问题.txt
[20180403]关于时区问题.txt --//昨天在写文章时,再次遇到时区问题,链接blog.itpub.net/267265/viewspace-2152515/.
1139 0