转自:blog.chinaunix.net/u1/40613/article.html
在很多unix下用date命令都能看到当前的时区。很多unix下中国时区都是用CST表示的。但是这个表示方法非常不合理。因为CST同时代表了下面4个时区。
CST Central Standard Time (USA) UT-6:00
CST Central Standard Time (Australia) UT+9:30
CST China Standard Time UT+8:00
CST Cuba Standard Time UT-4:00
在unix下通过/etc/localtime这个硬连接指向的/usr/share/zoneinfo下的时区文件表示当前的真正时区。比如
/etc/localtime指向了/usr/share/zoneinfo/Asia/Shanghai这个文件的时候,CST就代表了中国标准时间。
但是很多语言的时间函数库根本不做这个判断,往往就是用一个独立的时区配置文件做时区关键字和GMT的转换。因此很多系统里面CST都变成了GMT-6,也就是美国中部时间。
在zope里面也是如此。而且很奇怪的是有的地方做了正确的判断,有的地方没做正确判断。
比如文件的最后修改时间就是错的,但是如果对一个页面做comment的时候,comment时间就是正确的。
修改Zope中DateTime\DateTime.py的定义为:'cst':'GMT+8',就能够解决这个问题。
但是这样做就需要改代码,然后重新编译。
但既然CST这么不确定,就不能用。幸好有一个HKT,是表示香港的时间,也是东8区,这个没有错。托香港的福,就用这个好了。
阅读(881) | 评论(0) | 转发(0) |