首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >新版本的glibc返回错误的时区。

新版本的glibc返回错误的时区。
EN

Stack Overflow用户
提问于 2016-02-11 16:43:33
回答 1查看 1.2K关注 0票数 0

所以线程Why does glibc “timezone” global not agree with system time on DST?不是我问题的解决方案。

我的系统有glibc 2.11.3,我为我的项目编译了glibc 2.22。我运行了make localedata/install-locales

此MCVE仅在链接到旧glibc版本时才显示正确的时间。将它与新的glibc版本链接起来,它将显示UTC时间:

代码语言:javascript
运行
复制
#include <time.h>
#include <stdio.h>

int main()
{
    struct tm * tmNow;
    time_t dtNow;
    char sBuffer [100];

    tzset();

    time( &dtNow );
    tmNow = localtime( &dtNow );

    strftime( sBuffer, sizeof(sBuffer), "%Y-%m-%d %T", tmNow );
    printf("%ld - %s\n", timezone, sBuffer);
}

当我试图在新的tzselect版本的bin/目录中运行glibc时,我会得到以下错误:

代码语言:javascript
运行
复制
./tzselect: line 171: /usr/glibc/share/zoneinfo/iso3166.tab: No such file or directory
./tzselect: time zone files are not set up correctly

它或多或少地说明了一切,但就目前而言,我无法了解如何设置文件/usr/glibc/share/zoneinfo/iso3166.tab

如何永久设置 glibc版本的时区?

我不想使用TZ变量

UPDATE:使用TZ变量不会改变任何事情。我想我没有正确配置新的glibc版本。

UPDATE:将现有的/usr/share/zoneinfo系统目录复制到新的/usr/glibc/share/zoneinfo目录中,至少解决了TZ变量的问题。但是,只要没有设置TZ变量,新的glibc版本就不会识别正确的时区。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-11 18:16:06

我用vi打开了新的vi库,并搜索了localtime

glibc版本正在寻找localtime的硬编码目录被设置为/usr/glibc/etc

然后,这是一个简单的任务:我运行了命令

ln -s /usr/share/zoneinfo/Europe/Vienna /usr/glibc/etc/localtime

现在,在新的localtime版本中,无需使用TZ变量就可以正确识别TZ

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35345114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档