2

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

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

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

4

1 回答 1

5

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

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

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

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

于 2015-10-12T17:22:53.040 回答