几周前,土耳其能源和自然资源部宣布 DST 将是永久性的,而 GMT+3 将在该国永久使用。
目前,我们 Linux 服务器的时区设置为Europe/Istanbul。但是尚未发布 tzdata 更新。
由于缺乏更新,2016 年 10 月 30 日时区将自动从 GMT+3 更改为 GMT+2,如 zoneinfo 文件 (/usr/share/zoneinfo/Europe/Istanbul) 中所述。
您可以在下面查看 2016 年的详细信息:
# zdump -v /usr/share/zoneinfo/Europe/Istanbul | grep 2016
/usr/share/zoneinfo/Europe/Istanbul Sun Mar 27 00:59:59 2016 UT = Sun Mar 27 02:59:59 2016 EET isdst=0 gmtoff=7200
/usr/share/zoneinfo/Europe/Istanbul Sun Mar 27 01:00:00 2016 UT = Sun Mar 27 04:00:00 2016 EEST isdst=1 gmtoff=10800
/usr/share/zoneinfo/Europe/Istanbul Sun Oct 30 00:59:59 2016 UT = Sun Oct 30 03:59:59 2016 EEST isdst=1 gmtoff=10800
/usr/share/zoneinfo/Europe/Istanbul Sun Oct 30 01:00:00 2016 UT = Sun Oct 30 03:00:00 2016 EET isdst=0 gmtoff=7200
(在没有更新的情况下)为了防止这种情况成为危机,我们决定制定一个备份计划,将我们服务器的时区设置为固定的 GMT+3;但是当设置了固定的 GMT+3时,我们会遇到一个奇怪的行为。
在我们对时区进行任何更改之前,让我们看看我们服务器上的本地时间和 UTC 时间是多少。
# date
Wed Sep 21 11:13:11 EEST 2016
# date -u
Wed Sep 21 08:13:15 UTC 2016
我们将时区设置为固定的 GMT+3,如下所示:
# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Etc/GMT+3 /etc/localtime
让我们看看更改后我们服务器上的本地时间和UTC时间是多少。GMT+3 时间比 UTC早3 小时,它应该比 UTC晚3 小时,如上面的输出所示。
# date
Wed Sep 21 05:14:24 GMT+3 2016
# date -u
Wed Sep 21 08:14:26 UTC 2016
即使我们重置本地时间或 UTC 时间,它也不会改变。
# date -s "21 Sep 2016 11:16:00"
Wed Sep 21 11:16:00 GMT+3 2016
# date
Wed Sep 21 11:16:02 GMT+3 2016
# date -u
Wed Sep 21 14:16:05 UTC 2016
# date -u -s "21 Sep 2016 11:16:00"
Wed Sep 21 11:16:00 UTC 2016
# date
Wed Sep 21 08:16:01 GMT+3 2016
# date -u
Wed Sep 21 11:16:02 UTC 2016
为什么偏移量似乎是向后的?
更新 #1:时区数据库更新最近在其官方存储库下针对多个操作系统发布。该版本
tzdata2016g
包括上述更改的设置。在某些时候,这个问题与superuser.com 上提出的问题重复。
清晰的答案是
但我认为不应该删除它以帮助想要在 Linux 系统中禁用 DST 更改的人。
要禁用 DST 更改,请将您的
/etc/localtime
文件链接到文件夹下的 zoneinfo 文件之一/usr/share/zoneinfo/Etc/
示例命令:
要选择最合适的 zoneinfo 文件,请反转您的目标 GMT 的符号。
即要设置 GMT+3 时区(比 UTC 早 3 小时),应该使用 /usr/share/zoneinfo/Etc/GMT-3
在某个时候,TZ 表的新修订版将发布,并可用于所有 Linux 发行版的更新。嗯....我可以发誓,在宣布解决这个问题后不久,更新的时区表已经可用。也许您的情况可能会有一个新的 TZ 代号。