下一个: , 上一个: Seconds since the Epoch, 上层: Date input formats


A.6.9 指定时区规则

通常,日期的解释采用 TZ 环境变量指定的本地时区规则,如果 TZ 没有设置, 则使用系统默认的设置。给一个日期指定不同的时区,在日期前面使用形如 `TZ="rule"' 的字串。日期里面必须使用双引号 (`"'), rule 里面的任何引号和反斜杠都要用反斜杠转义符号。

例如,使用 GNU date 命令可以回答像 "What time is it in New York when a Paris clock shows 6:30am on October 31, 2004?"的问题, 在下面的转换脚本里面日期的前面加上 `TZ="Europe/Paris"':

     $ export TZ="America/New_York"
     $ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
     Sun Oct 31 01:30:00 EDT 2004

这个例子里面,--date 开始使用自己的 TZ 设置,其余的使用 `Europe/Paris' 规则,将字串 `2004-10-31 06:30' 当成位于巴黎来处理 。然而,因为 date 命令用系统的时区规则处理,它使用纽约时间。 (2004 年巴黎通常早于纽约六小时,但这个例子中的五小时是指万圣节期间。)

一个 TZ 值,对应 `tz' database 里面地点名的规则。最新的地点归类见 TWiki Date and Time Gateway。 一些非 GNU 主机要求在 TZ 设置的地点名 前面加上冒号,例如, `TZ=":America/New_York"'。

`tz' 数据库包括从 `Arctic/Longyearbyen' 至 `Antarctica/South_Pole' 的广范的地点范围,但是如果如果你处在海洋有自己的私人时区,或者你使用不支持 `tz' 数据库的非 GNU 主机,你也许要用 POSIX 规则替代。 简单的 POSIX 规则如 `UTC0' 指定的时区不使用夏时制; 其他的规则 可以指定简单的夏时制。参阅 Specifying the Time Zone with TZ.