程序人生 - 爲何沒有 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時區,開發都沒影響,保持各種系統和軟件的兼容可能更重要吧。誰知道更多呢?請留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章