配置时区

配置时区

我有两台装有 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/rcSUTC=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

相关内容