哪个 LogicBlox 时区规范?

Which LogicBlox time zone spec?

在 LogicBlox 的每个发行版中,有两个与支持的时区有关的 CSV 文件:

logicblox-4.x.x
|
└─share
    |
    └─logicblox
       |
       └─BlockResources
            |
            └─timezone
              |    date_time_zonespec_one_reg_per_tz_code.csv
              |    date_time_zonespec.csv

在构建使用时区的应用程序时,使用哪个是正确的?我们可以打印的内部谓词中是否包含有效时区?

主要时区规范文件是date_time_zonespec.csv。此数据与日期时间相关的内置函数一起使用,例如 datetime:format、parse、create 等。目前逻辑上无法获取有效区域或时区代码列表。

文件one_reg_per_tz_code仅用于将时区代码(例如EST)映射到默认区域(例如America/New_York)。该文件存在的原因是我们使用的较低级别的日期时间库 (boost) 仅支持大多数时区符号作为输出,而不是输入。这样做的原因是一些常见的时区符号令人惊讶地不是一组时区规则的唯一指示(例如 AST/ADT 没有相同的规则,澳大利亚和美国都使用 EST)。不幸的是,在实践中我们确实必须处理使用此类时区符号的数据,因此我们使用此 csv 文件将时区代码映射到一个特定区域,该区域确实指示一组唯一的时区规则。不过,我们选择的默认映射可能不是您的应用程序所需的映射。

最好始终使用区域代码(如 America/New_York)以避免混淆。

我预计在中期我们会将我们的日期时间和时区处理更改为不同的库。一个原因是 boost 中的解析支持不佳,但另一个原因是我们真的想使用具有所有历史时区规则的时区数据库,而不仅仅是当前的(如本规范文件所指定的)。