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

Don*_*een 5 time paths directory

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

我的机器上的时区信息位于/usr/share/zoneinfo.

  1. 它总是在该目录中吗?如果是这样,在哪里指定
  2. 如果没有,是否有类似于“gettimeofday(2)”的系统调用,我可以通过它来找出它在哪里?

提前致谢。

Jam*_*dge 5

时区的搜索位置在 C 库中进行编码(可以在其中找到各种时区感知函数):

$ strings -a /lib/x86_64-linux-gnu/libc.so.6 | grep zoneinfo
/usr/share/zoneinfo
Run Code Online (Sandbox Code Playgroud)

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

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

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