我们正在为我们的 Ubuntu 应用程序添加时区支持。
我的机器上的时区信息是/usr/share/zoneinfo
。
- 它一直在该目录中吗?如果有,具体在哪里说明?
- 如果没有,是否有类似于“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
。