我有两台装有 Ubuntu 12.04 的计算机,都配置了位置圣地亚哥。但是时区不同(地图下方的蓝色条)
当使用 C++ 编程并要求获取 localTime 和 Gmtime 的时间差时,就会产生问题。
time_t t = time(0);
struct tm* now = localtime(&t);
struct tm* now2 = gmtime(&t);
这种行为是否可能是由于智利内政部第 106 号最高法令,该法令改变了全年夏季的时间?
如何配置 PC1 的时区使其看起来像 PC2 ?
PD:我在两台电脑上都运行命令
sudo ntpdate -u ntp.ubuntu.com
dpkg-reconfigure tzdata
另请检查:
Bios 中的时间(均设置为 UTC 时间)
与
/etc/default/rcS
UTC=yes
配置双启动(在一台 PC 上)以便 Windows 使用 UTC 时间;
调用 gmtime 之后 now 和 now2 的区别(c++代码);
检查标志
tm_isdst
,其值为0;PD2 : PC2 中的时区是正确的时区
答案1
我找到了问题!一台电脑没有更新 tzdata。要更新 tzdata,请在控制台中执行
sudo apt-get install tzdata tzdata-java
使用此命令,执行时的时间配置
zdump -v America/Santiago | grep 2015
应该打印这些
America/Santiago Sun Apr 26 02:59:59 2015 UTC = Sat Apr 25 23:59:59 2015 CLST isdst=1 gmtoff=-10800
America/Santiago Sun Apr 26 03:00:00 2015 UTC = Sun Apr 26 00:00:00 2015 CLT isdst=0 gmtoff=-10800