/usr/share/zoneinfo 在哪里指定?

/usr/share/zoneinfo 在哪里指定?

我们正在为我们的 Ubuntu 应用程序添加时区支持。

我的机器上的时区信息是/usr/share/zoneinfo

  1. 它一直在该目录中吗?如果有,具体在哪里说明
  2. 如果没有,是否有类似于“gettimeofday(2)”的系统调用可以帮助我找出它在哪里?

提前致谢。

答案1

时区的搜索位置在 C 库中编码(其中有各种时区感知函数):

$ strings -a /lib/x86_64-linux-gnu/libc.so.6 | grep zoneinfo
/usr/share/zoneinfo

C 库代码使用此目录作为预处理器#define,因此没有例程询问它是用什么值编译的。

如果你需要自己解析时区数据(而不是使用一些可用的 C 库例程),那么硬编码/usr/share/zoneinfo应该没问题:如果你的目标平台遵循Linux 文件系统层次结构,你应该是安全的。

如果您只对当地时区感兴趣,请阅读/etc/localtime,它是来自的相关文件的副本/usr/share/zoneinfo

相关内容