问题描述
我想从终端更改系统时钟的时区。
这可以用来完成
tzselect
“在终端打开gui”
要么
sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime
“这将设置为gmt”
但有没有办法设置时区只有偏移ie.-1或+5等?
我需要这样做,因为我正在编写一个应用程序来调整timeoffset或报告日志,我唯一的信息是用户IP。我可以使用一个web应用程序来查找IP的位置,但是我需要设置偏移量,这很容易,如果我可以得到位置的偏移量,但是如果我需要查找区域和城市,那将是一个真正的痛苦。
如果有人知道如何设置系统时钟+/-小时的答案会很好。
最佳解决办法
要从终端更改时区,只需按键盘上的Ctrl
+ Alt
+ T
即可打开终端。打开时,运行下面的命令:
sudo dpkg-reconfigure tzdata
一旦打开,只需按照屏幕更改时区即可。
次佳解决办法
您也可以使用新的timedatectl
在14.04中设置时间。
sudo timedatectl set-timezone America/New_York
第三种解决办法
您可以使用/usr/share/zoneinfo/Etc
中的GMT±x文件。
sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime
第四种办法
我意识到这个线程有点过时,但我一直在寻找更好的解决方案,因为我需要在用户从我们的网站下载并部署它后自动设置虚拟机中的时区。这就是我最终的结果:
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只将结果输出到标准输出,然后输出到$ tz变量。
希望它能帮助别人!
第五种办法
更新时区的简单方法是使用sudo dpkg-reconfigure tzdata
。但是这不是很容易编写脚本。
如果你想通过脚本明确地设置时区(比如设置虚拟机),下面是一个配方:
为所需的时区设置一个变量,例如之一
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)。
第六种办法
长话短说 /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
的步骤和确认
第七种办法
下面是我使用的方法,即US-centric,因为我不需要担心non-US时区。
如果我需要确定当前的时区,我要么:
cat /etc/timezone
要么
sudo hwclock --show
然后我做:
timedatectl set-timezone <_designation_>
其中<_designation_>
是以下之一:
美国/美国东部/美国中部/山区美国/太平洋美国/阿拉斯加美国/阿留申美国/亚利桑那美国/East-Indiana美国/夏威夷美国/Indiana-Starke美国/密歇根州美国/Pacific-New美国/萨摩亚
例如。:
timedatectl set-timezone US/Eastern
其他时区名称可以在这里找到:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones