用于动态重新加载/ usr / share / zoneinfo数据库的库/代码?

时间:2012-08-27 22:49:20

标签: c++ c linux timezone zoneinfo

由于系统/usr/share/zoneinfo数据库经常更新,我希望能够在一个运行时间很长的C ++程序中动态加载(并重新加载)。

现在我知道标准库将使用这个数据库,但我怀疑它是否提供动态重新加载它(或者至少我找不到与Google有关的任何内容。)

我可以使用任何C或C ++库或代码来执行此操作吗?

2 个答案:

答案 0 :(得分:3)

我是个白痴。提供zoneinfo数据库的IANA也提供a library来处理它。有趣的是,我通过阅读postgresql源代码发现了这一点。

我不确定这是否足够,但它是公共领域的许可,所以至少我可以将它拉入我的代码并根据我的需要进行调整。

答案 1 :(得分:1)

localtime等使用tzset设置的时区转换信息,因此您通常可以通过将TZ设置为某个值来重新加载该信息,并调用{{1} ,设置它并再次调用它。这将适用于glibc,但您应该检查其他平台。

否则,您正在使用其他一些非Posix API来访问zoneinfo数据库,您应该查看库用于重新加载其数据的工具。