![从终端设置时区](https://linux22.com/image/839300/%E4%BB%8E%E7%BB%88%E7%AB%AF%E8%AE%BE%E7%BD%AE%E6%97%B6%E5%8C%BA.png)
我想从终端更改系统时钟的时区。
这可以通过
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
。要将其更改为纽约,我这样做
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
- 等待我的时钟更新
以下屏幕截图显示了timedatectl