从终端设置时区

从终端设置时区

我想从终端更改系统时钟的时区。

这可以通过

tzselect

“在终端中打开一个 GUI”

或者

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

“将设置为格林威治标准时间”

但是有没有办法只使用偏移量来设置时区,即 -1 或 +5 等?

我需要这样做,因为我正在编写一个应用程序来调整时间偏移或报告日志,而我拥有的唯一信息是用户 IP。我可以使用 Web 应用程序来查找 IP 的位置,但随后我需要设置偏移量,如果我能获得位置的偏移量,这将很容易,但如果我需要查找区域和城市,这将非常麻烦。

如果有人知道如何使用 +/- 小时设置系统时钟,那就太好了。

答案1

要从终端更改时区,只需按键盘上的Ctrl+ Alt+T打开终端。打开后,运行以下命令:

sudo dpkg-reconfigure tzdata

打开后,只需按照屏幕指示更改时区。

答案2

您也可以使用新的timedatectl来设置14.04中的时间。

sudo timedatectl set-timezone America/New_York

答案3

我意识到这个帖子有点过时了,但我正在寻找一个更好的解决方案,因为我需要在用户从我们的网站下载并部署虚拟机后自动设置时区。以下是我最终得到的结果:

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

一旦在新的网络上启动,这将从服务器查询 geoip.ubuntu.com(我的脚本首先检查连接性),然后根据响应设置服务器的时区。

“wget -q0 -”告诉 wget 仅将结果输出到 stdout,然后通过管道传输到 $tz 变量。

希望它能帮助到别人!

答案4

总结 /etc/localtime是指向 中的文件的符号链接/usr/share/zoneinfo/Continent/City。通过改变它指向的位置,您可以改变时区。

为了更改时区,请删除/etc/localtime并将符号链接分配给您想要的城市。例如,ls -l /etc/localtime报告此文件指向/usr/share/zoneinfo/America/Denver。要将其更改为纽约,我这样做

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. 等待我的时钟更新

以下屏幕截图显示了timedatectl

在此处输入图片描述

相关内容