1

执行$ date -R给了我,+0300 但是当我打印时区全局变量时timezone,它显示给我-7200

想法发生了什么?

看起来 DST 不包括在内,并且时区符号不同,但为什么呢?

4

2 回答 2

2

timezone不知道 D(aylight)S(aving)T(ime) 的定义。时区是地球上全年不变的部分(更新:至少在Sandford Fleming 发明它们的日子里,它们的命名是不变的)。因此,由于对格林威治的偏移量很常见,因此添加临时 DST 偏移量是没有意义的。


不同的符号是由于日期/时间和时区的不同观点和方向。

给出的偏移量date是指您所在的位置格林威治。

测量来自格林威治的timezone 位置。


关于 C 系统调用:gettimeofday()提供 DST 信息。(更新:这不是glibc实施的情况)

于 2013-07-31T15:32:39.557 回答
0

根据我的手册页timezone设置为

格林威治标准时间以西的秒数

我会理解,就像“在西方越多,你就越大timezone”。所以标志不同,date -R也不包括夏令时。

您可以使用struct tm *获取的localtime()来检查您的环境中是否确实存在 DST。如果是该领域tm_isdst > 0,那么它就是。

于 2013-07-31T15:32:54.127 回答