CST Central Standard Time (USA) UT-6:00 //美国中部时间系统怎么知道这个 CST 代表哪一个时区呢? --- 是通过 /etc/localtime 这个链接指向的时区文件. 不信的话可以试试把 localtime 链接到同样是 CST 的另一个时区:
CST Central Standard Time (Australia) UT+9:30 //澳大利亚时间
CST China Standard Time UT+8:00 //北京时间
CST Cuba Standard Time UT-4:00 //古巴时间
ln -sf /usr/share/zoneinfo/America/Regina /etc/localtime之后再执行 date 会得到一个与北京时间相差 14 小时的时间, 但还是写着 CST.
有意思的是, 某些应用程序并不检测系统的 localtime, 比如 PHP. 可以做这样一个试验:
php -r "echo (strtotime('CST') - strtotime('GMT')) / 3600;" PHP 把这个 CST 当作 Central Standard Time (USA) UT-6:00 来算.另外, 现在流行的 RSS 2.0 也是这样. 在 pubDate 标签的定义 中时间的语法使用 rfc822, 而 CST 在 rfc822 中只代表 Central: -6.
GNU 建议我们不要使用这种 Ambiguous time zone items, 更合适的是 W3CDTF.

没有评论:
发表评论