如何从命令行更改时区设置

man*_*cxi 263 command-line time timezone

我有一个设置为PST的虚拟机,有几个同事在不同的时区。

如果我想将时区更改为ESTGMT,我需要做什么?

Jos*_*ush 345

timedatectl

sudo timedatectl set-timezone <timeszone>
Run Code Online (Sandbox Code Playgroud)

例子:


这个命令是完美的自动化脚本,因为它不需要任何用户互动,同时与基于其它给出答案dpkg-reconfigure tzdata


max*_*zig 49

作为 root,你必须执行:

dpkg-reconfigure tzdata
Run Code Online (Sandbox Code Playgroud)

应该启动一个基于菜单的工具,允许您更改时区。


小智 36

以下也有效。对于格林威治标准时间:

ln -sf /usr/share/zoneinfo/GMT /etc/localtime
Run Code Online (Sandbox Code Playgroud)

森林:

ln -sf /usr/share/zoneinfo/EST /etc/localtime
Run Code Online (Sandbox Code Playgroud)

  • 我认为链接城市文件之一而不是 GMT 或 EST 会更好,因为这样它们将跟踪夏令时,而链接(例如)GMT 不会更改系统时间以反映夏令时生效的时间在你的城市。例如:`ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime` (9认同)
  • 我要警告不要这样做。如果某些东西或某人不小心覆盖了 /etc/localtime,您就丢失了您的 zoneinfo 文件。最好将 zoneinfo 文件复制到 /etc/localtime 文件上。 (3认同)
  • 在 docker 镜像上,“timedatectl”可能无法直接安装,安装一个工具来更改时区确实有点过分了。这是唯一允许仅使用系统命令设置时区的答案。从这个意义上来说,我想说这是最好的答案。 (2认同)

小智 25

最简单的方法尤其是对服务器来说是列出时区:

timedatectl list-timezones
Run Code Online (Sandbox Code Playgroud)

并选择您的,例如:

timedatectl set-timezone Europe/Athens
Run Code Online (Sandbox Code Playgroud)

就是这样!,:-)


小智 7

timezone文件/etc夹中的文件编辑为:

Etc/GMT
Run Code Online (Sandbox Code Playgroud)

您可以使用下一个格式:

Region "/" City 
Run Code Online (Sandbox Code Playgroud)

示例/etc/timezone

Europe/Athens
Run Code Online (Sandbox Code Playgroud)

或者

Europe/Paris
Europe/London
Run Code Online (Sandbox Code Playgroud)

您可以试验:dpkg-reconfigure tzdata 并检查 cat 时区文件。

您必须重新启动或重新启动服务(不是 ntp 服务)。我不知道是哪一个。如果有人知道请与我们分享。(在 Ubuntu 15.10 上测试,立即考虑更改)


Gil*_*il' 6

要运行一个具有不同时区设置的程序,请设置TZ环境变量,例如运行TZ=Pacific/Kiritimati date以查看圣诞节岛上的时间,或者export TZ=Pacific/Kiritimati让设置最后用于 shell 会话。


J R*_*don 6

cp -p /usr/share/zoneinfo/US/Pacific /etc/localtime
Run Code Online (Sandbox Code Playgroud)

我建议反对其他人提到的链接。如果某个脚本不小心覆盖了您的/etc/localtime文件,那么它会覆盖您的太平洋时区文件……替换它有点麻烦。

只需使用上面的命令将太平洋文件复制到本地时间文件上。