boost :: locale在两个独立但相同的系统上表现不同

时间:2014-09-25 11:41:41

标签: c++ boost timezone boost-locale

我有这个程序:

int main()
{
    using namespace boost::locale;

    generator gen;
    std::locale::global(gen(""));

    calendar cal("UTC");
    calendar cal_local("Europe/Berlin");

    date_time dt_utc(std::time(0), cal);
    date_time dt_local(std::time(0), cal_local);

    std::cerr << "UTC: " << dt_utc.get(period::hour()) << "\n";
    std::cerr << "LOCAL: " << dt_local.get(period::hour()) << "\n";
}

在运行Debian Wheezy gcc 4.7.2-5boost 1.49的两个不同但相同的系统上,它的行为有所不同。两个系统都具有相同的区域设置en_US.UTF-8

上述程序是在Thu Sep 25 2014 11:15 UTC附近执行的。

系统A的输出

UTC: 11
LOCAL: 11

系统B上的输出

UTC: 11
LOCAL: 13

应该导致什么?

注意:目前DST在欧洲/柏林有效


更新

两个系统上的

libboost1.49-dev都是从Debian存储库安装的,如下所示:

user@system_a:~$ apt-cache policy libboost1.49-dev
libboost1.49-dev:
  Installed: 1.49.0-3.2
  Candidate: 1.49.0-3.2
  Version table:
 *** 1.49.0-3.2 0
        500 http://ftp2.de.debian.org/debian/ wheezy/main amd64 Packages
        100 /var/lib/dpkg/status

同时验证libboost_locale.so在两个系统上都有依赖关系libicuuc.solibicui18n.solibicudata.so

0 个答案:

没有答案