gpt4 book ai didi

c++ - Howard Hinnant的日期库:仅加载IANA时区数据库的一部分

转载 作者:行者123 更新时间:2023-12-01 14:42:11 25 4
gpt4 key购买 nike

我正在使用内存有限的嵌入式系统。另外,所使用的工具链当前最多支持C++ 17。
我必须将UTC时间戳转换为本地时间戳,以便向用户显示数据。从另一个系统中检索应该使用的时区。所有这些都与Howard Hinnant的日期和tz库完美配合。
Howard Hinnant在他的出色的talk at CppCon 2016中提到加载的DB大约占用800 KB的内存。他还mentions,有一种方法可以只加载部分数据,并且曾经在某处记录过数据。
由于我不需要回顾过去的能力,因此这是节省一些RAM的绝佳机会。
我找不到有关如何仅部分加载数据库的信息。既不在github上,也没有在该网站上链接的或通过Google链接的任何资源中。

最佳答案

注意:这些技巧最近未经过测试!1. 时间窗口
src / tz.cpp具有:

// These can be used to reduce the range of the database to save memory
CONSTDATA auto min_year = date::year::min();
CONSTDATA auto max_year = date::year::max();
我5年前写这篇文章时的想法是,您可以设置 min_yearmax_year,并且该代码将跳过此时间窗口之外的数据库条目。这是在实现 USE_OS_TZDB选项(该程序读取OS提供的数据库而不是IANA文本数据库)之前编写的。因此,它从未使用 USE_OS_TZDB=1进行过测试。 2. 地理窗口
src / tz.cpp具有:
CONSTDATA char*const files[] =
{
"africa", "antarctica", "asia", "australasia", "backward", "etcetera", "europe",
"pacificnew", "northamerica", "southamerica", "systemv", "leapseconds"
};
读取数据库的文本版本( USE_OS_TZDB=0)时,这是它读取的文本数据库文件的列表。删除对您的应用程序无用的文件。

关于c++ - Howard Hinnant的日期库:仅加载IANA时区数据库的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63595572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com