从终端设置时区

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

这可以用来完成

tzselect 

“在终端打开了一个gui”

要么

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

“将设置为gmt”

但有没有办法设置时区只有偏移ie.-1或+5等?

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

如果有人知道如何用+/-小时设置系统时钟的答案会很棒。

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

 sudo dpkg-reconfigure tzdata 

打开后,只需按照屏幕更改时区即可。

您还可以使用新的timedatectl在14.04中设置时间。

 sudo timedatectl set-timezone America/New_York 

我意识到这个线程有点陈旧,但我一直在寻找更好的解决方案,因为我需要在用户从我们的网站下载并部署后自动在VM中设置时区。 这就是我最终得到的结果:

 echo "Setting TimeZone..." export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*\(.*\)<\/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变量。

希望它可以帮到某人!

您可以在/usr/share/zoneinfo/Etc使用GMT± x文件。

 sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime 

TL; DR /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的步骤和确认

在此处输入图像描述

更新时区的简便方法是使用sudo dpkg-reconfigure tzdata 。 但这并不是那么容易编写脚本。

如果您想通过脚本显式设置时区(例如,用于设置VM),这里有一个配方:

为您想要的时区设置变量,例如

 tz=Europe/London tz=America/Anchorage tz=Etc/GMT+6 

有效值是/usr/share/zoneinfo下的目录和文件名。

然后简单

 sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime echo $tz | sudo tee /etc/timezone 

请注意, /etc/localtime/etc/timezone必须一致。

可能现在重新启动以更新所有服务(例如cron)。

这是我使用的方法,以美国为中心,因为我不需要担心非美国时区。

如果我需要确定当前时区,我要么:

 cat /etc/timezone 

要么

 sudo hwclock --show 

然后我做:

 timedatectl set-timezone <_designation_> 

其中<_designation_>是以下之一:

美国/东部
美国/中部
美/山
美国/太平洋
美国/阿拉斯加
美国/阿留申
美国/亚利桑那
美国/东印第安纳
美国/夏威夷
美国/印第安纳州斯塔克
美国/密歇根州
美国/太平洋 – 新
美国/萨摩亚

例如:

 timedatectl set-timezone US/Eastern 

其他时区名称可在此处找到: https : //en.wikipedia.org/wiki/List_of_tz_database_time_zones

除非您选择要与每个时区偏移对应的时区文件,否则无法执行此操作。

一些答案建议使用/ usr / share / zoneinfo / Etc中的文件,但这些问题是它们与DST无关。

因此,除非您选择一些时区配置来匹配每个偏移量,或者您不关心DST,否则无法一般地执行此操作。