cnBeta订阅时区不对问题及linux下时区设置兼容性问题,慎用CST时区

cnBeta是我非常喜爱的IT资讯站,装上Outlook 2007之后就用Outlook来完成订阅工作了,但是郁闷的是他的订阅条目的时间老是比当前时间早一些,动不动时间就是明天的了。打开http://www.cnbeta.com/backend.php页面代码发现里面的时区完全不对,不符合RSS2.0规范,RSS标准时区表示方法是GMT+0800这种格式,而cnbeta采用的是CST时区,很多unix下中国时区(Asia/Shanghai)都是用CST表示的。但是这个表示方法非常不合理,CST实际上表示以下四种时区: CST Central Standard Time (USA) UTC-6:00 (美国)中部标准时间 CST Central Standard Time (Australia) UTC+10:30 中澳大利亚标准时间 CST China Standard Time UTC+8:00 中国沿海时间(北京时间) CST Cuba Standard Time UTC-4:00 古巴标准时间 在unix下通过/etc/localtime这个硬连接指向的/usr/share/zoneinfo下的时区文件表示当前的真正时区。比如/etc/localtime指向了/usr/share/zoneinfo/Asia/Shanghai这个文件的时候,CST就代表了中国标准时间。但是很多语言的时间函数库根本不做这个判断,往往就是用一个独立的时区配置文件做时区关键字和GMT的转换。因此很多系统里面CST都变成了GMT-6,也就是美国中部时间。所以采用CST作为时区设置就会有兼容性的问题了。 在Windows中更是如此,所以订阅老是相差14个小时UTC-0600的现在不就是现在之后的14个小时吗。最根本的解决方法应该是改变unix服务器的时区,采用GMT+0800时区或者UTC+0800。 实际上中国标准时间(GMT+0800)的正确缩写是CCT,而不是CST。 更改linux服务器时区方法是:在/usr/share/zoneinfo/目录下,找到期望的时区,拷贝覆盖/etc/localtime ,然后reboot即可得到新的时区 查询、修改时间方式:
# hwclock命令 -r 查询BIOS时间 -w 将Linux内核时间写入BIOS
# date命令 -s
更改时间或日期
完成修改时区的工作之后可以通过#ntpdate命令来根据NTP服务器更新本地时间。 XOOPS的订阅也有时间问题,但我解决了,改天整理以下再发布。站长们检查一下网站订阅链接的时区是否正确吧。