在设置系统时间、开发PHP和Java程序(例如用JDBC访问MySQL数据库)的时候,有时需要选择本地时区。通常,时区列表中和中国有关的共有六个本地时区:Asia/Chongqing、Asia/Shanghai、Asia/Urumqi、Asia/Macao、Asia/Hong_Kong、Asia/Taipei。而我们国家通用的北京时间,却唯独没有列在其中!
有国内开发者向Ubuntu提交了一个Bug:
no Asia/BeiJing option in TimeZone
。
Ubuntu 开发者认为:首先,这个问题不归他们管;其次,单方面修改时区列表容易出错,且容易造成与其他软件不兼容。
无独有偶,也有开发者向Sun(现为Oracle)公司提出问题:
JDK-4141080 : The Time Zone id name for PRC is wrong。
错误的中国时区最终被修正为Asia/Shanghai,也不是Asia/Beijing。
为什么会这样?引用程序员经常对测试员说的一句话 “这可能是个历史遗留问题” 来解释这个事情。我们先来看看历史:
1902年(清光绪二十八年),清朝海关曾制定海岸时,以东经120度之时刻为标准。
1912年中华民国建立后,位于北京的中央观象台将全国分为五个时区。
1939年3月9日,中华民国内政部召集标准时间会议,确认1912年划分之时区为中国标准时区,分别为:
昆仑时区 GMT+5.5 新疆西部与部分西藏
新藏时区 GMT+6 新疆及西藏
陇蜀时区 GMT+7 中国中部
中原标准时区 GMT+8 中国海岸
长白时区 GMT+8.5 中国东北
1949年10月1日,中华人民共和国成立,UTC+8时区被正式命名为“北京时间”(与原中原标准时间相同)。
那为什么没有新增Asia/Beijing时区?从国际标准本身的角度来看,北京和上海处于同一时区,只能保留一个。这大概就是为什么没有 Asia/Beijing 北京时区的原因。
资料引用:
https://www.hoehub.com/articles/281.html

