linux环境下shell编程之时区转换

今天和同事一起讨论了一下时区转换的问题.
执行下面的语句:
TZ=’America/Los_Angeles’ date +”%Y-%m-%d %H” –date=”`TZ=’Asia/Shanghai’ date –date=”2008-10-10 15:00:00″`”

结果:2008-10-10 14
显然是错误的.

直接看一下后面的语句:TZ=’Asia/Shanghai’ date –date=”2008-10-10 15:00:00″
结果:Fri Oct 10 15:00:00 CST 2008

为什么呢?搜了一下,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都变成了GMT-6,也就是美国中部时间.

然后分别试了一下香港和台湾的时区,也都会被自动转为CST.

最后试了一下新加坡的时区:SGT(Asia/Singapore)

TZ=’America/Los_Angeles’ date +”%Y-%m-%d %H” –date=”`TZ=’Asia/Singapore’ date –date=”2008-10-10 15:00:00″`”

一切OK,

附录:各洲时区列表:http://us.php.net/manual/en/timezones.php

linux环境下shell编程之时区转换》上有 4 条评论

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>