Chinaunix首页 | 论坛 | 博客
  • 博客访问: 237919
  • 博文数量: 18
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1870
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-09 14:42
文章分类

全部博文(18)

文章存档

2009年(2)

2008年(69)

我的朋友

分类: C/C++

2008-07-18 09:28:39

转载:

研究PHP生成RSS2.0文件时,我发现利用阅读工具浏览时总是有时间不对的问题CST这个时区究竟 代表了什么?在一台 Linux 系统里运行 date 命令可以得到这种格式的时间: "Wed Dec  7 14:15:22 CST 2005". 搜索 CST, 可以发现它竟同时代表了四个时区:

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 //古巴时间

系统怎么知道这个 CST 代表哪一个时区呢? --- 是通过 /etc/localtime 这个链接指向的时区文件. 不信的话可以试试把 localtime 链接到同样是 CST 的另一个时区:

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 标签的定义 中时间的语法使用 , 而 CST 在 rfc822 中只代表 Central: -6.
GNU 建议我们不要使用这种 , 更合适的是 .

阅读(1128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~