4

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

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

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

4

2 回答 2

3

我是个白痴。提供 zoneinfo 数据库的 IANA 还提供了一个使用它的库。有趣的是,我通过阅读 postgresql 源代码发现了这一点。

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

于 2012-08-28T17:08:07.883 回答
1

localtime等人使用由 设置的时区转换信息tzset,因此您通常可以通过设置TZ某个值、调用tzset、设置回并再次调用来重新加载该信息。这适用于 glibc,但您可能应该在其他平台上进行检查。

否则,您将使用其他一些非 Posix API 来访问 zoneinfo 数据库,并且您应该查看该库用于重新加载其数据的设施。

于 2012-08-28T11:10:51.330 回答