【发布时间】:2018-12-19 13:30:41
【问题描述】:
有没有办法在 MarkLogic 中本地获取给定区域的 UTC 偏移量?
例如如果区域为“America/New_York”,则偏移量应为 -5:00(标准时间期间)或 -4:00(夏令时期间)
如果使用内置 ML 函数无法实现这一点,您会推荐什么? 我想在 MarkLogic 环境中自己做。
【问题讨论】:
标签: marklogic marklogic-8 marklogic-9
有没有办法在 MarkLogic 中本地获取给定区域的 UTC 偏移量?
例如如果区域为“America/New_York”,则偏移量应为 -5:00(标准时间期间)或 -4:00(夏令时期间)
如果使用内置 ML 函数无法实现这一点,您会推荐什么? 我想在 MarkLogic 环境中自己做。
【问题讨论】:
标签: marklogic marklogic-8 marklogic-9
MarkLogic 从操作系统读取时区设置,因此请更改主机本身的时区设置。
这里有一些关于如何为 CentOS/RedHat 执行此操作的说明,基本上归结为将 /etc/localtime 链接到不同的预定义时区文件之一:
https://ma.ttias.be/changing-the-time-and-timezone-settings-on-centos-or-rhel/
HTH!
【讨论】:
xdmp:parse-dateTime("[Zn]", "Amsterdam"),但xdmp:parse-dateTime("[Zn]", "New_York") 无效。不过,它确实可以理解大多数首字母缩略词,因此如果您可以将地区转换为时区代码,您就可以非常接近。否则,您可能需要在 map:map 等中对表格进行硬编码。
这个问题本身是无法回答的。时区偏移量因年份以及地区和地方而异(由于时区的性质 h - 一种政治结构,而不是任何理智的东西)。
随着决定此类事情的区域组织决定规则,规则会随着时间而变化,并且在任何合理的方式上都不一致。
规则和表格内置在每个操作系统中——以不同的方式和完整性/准确性,取决于操作系统、本地区域和软件包安装/更新。通常,它们不会及时回溯,并且可能仅包含本地区域的数据。
这些表格主要用于回答“当前区域设置时间是多少”,其次是回答“特定区域名称的当前 TZ 偏移量是多少”。获得更多的时间是一个延伸(例如“DST 何时发生”、“在 XYZ 区域观察到 DST”、历史分区时间的本地时间或 TZ 偏移量是多少)
结果,“什么是 UTC 偏移量”的答案不是单个数字常量。
我建议您具体确定问题的意图/用例,然后创建适当的表格并将其作为文档导入 ML。 比如这个:
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
根据实际预期用例进行调整,因为脱离上下文的问题不太可能有一个对所有目的都正确的答案。
【讨论】: