Asia/Beijing 這個時區是消失了麼?
@tinyfool 對啊,我就奇怪爲什麼北京時間就要用上海和重慶……
開發者都知道
想必做開發的,尤其是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時區,開發都沒影響,保持各種系統和軟件的兼容可能更重要吧。誰知道更多呢?請留言。