Dreamhost 似乎认为我们喜欢 PDT,尽管我们身处中西部。如何更改时区?
答案1
我发现一个更容易使用的工具是dpkg-reconfigure
。使用:
sudo dpkg-reconfigure tzdata
您将获得多种选择,其中包括一些未包含在内tzselect
。
答案2
对于 OP 来说这可能有点晚了,而更多的是针对到达此处的其他搜索者。
如果你需要非交互式解决方案,请尝试以下解决方案使用 dpkg-reconfigure tzdata 和 debconf-set-selections 更改时区
echo "Europe/Zurich" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
您可以通过查看 /usr/share/zoneinfo 来找出您的时区。实际上,上面的 dpkg-reconfigure 命令会将相应的文件从那里复制到 /etc/localtime。我以前只是手动执行此操作,而且似乎效果很好。
如果长时间运行的进程没有捕捉到变化,不要太惊讶。例如,Apache 日志时间戳浮现在脑海中。考虑一下这是否重要,以及是否需要重新启动正在运行的进程甚至重新启动。
答案3
要在较新的 Debian 和 Ubuntu 版本(Stretch/Xenial 等)上以非交互方式编辑它,您/etc/localtime
也需要将其删除,否则/etc/timezone
将被覆盖。
echo 'Europe/Zurich' > /etc/timezone
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
此答案基于 mc0e 的答案。我无法以我的声誉添加评论。
答案4
总结
echo "TZ=Etc/UTC" >> /etc/environment
tzconfig
Etc/UTC
您使用 找到的首选时区在哪里tzselect
?
更长的版本
当你使用
dpkg-reconfigure tzdata
重启后,时区信息不会保留。您可以使用以下命令验证设置
diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
如果你只更新/etc/timezone
,更新将与不一致/etc/localtime
,因此最好执行
tzconfig
用于tzselect
找出实际存在的时区(或者只是浏览/usr/share/zoneinfo
目录)。
在 POSIX 系统中,TZ
应该优先于/etc/localtime
:
export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018
直接使用TZ
可以节省很多系统调用因为经常使用的日期/时间相关函数每次程序请求当前日期时都必须访问文件系统。这是一个微优化,但相当简单。