1

我正在指定一个向用户显示时间段的应用程序。目标是在简单视图(无时间,无时区)和详细视图(日期和时间,带有时区数据)中呈现周期。简单视图应该是明确的,换句话说,用户可以浏览它并且他们对所见内容的假设是正确的(它们在本地时区有效)。

在全局周期结束时,在 AoE 时区 [1] 中显示日期将解决此问题。例如,提交截止日期可能显示为2018-04-03(实际上2018-04-03 23:59:59 AoE)。这意味着只要是地球上某个地方的 4 月 3 日,就可以接受提交。

但我也想指出一个全球时期的开始。例如,如果在 4 月 2 日开放提交April 2 2018 00:01,那么它们会在地球上某个地方的 4 月 2 日被接受。(当前时间为 UTC+14,与莱恩群岛相匹配。)

我看不到使用 AoE 导出全局开始时间的方法。是否有与 AoE(标准化语义时区)等价的跟踪全局开始时间的方法?

笔记:

  • 硬编码 UTC-12 和 UTC+14 是现代的简单答案。但是我正在寻找如果值更改(而不是引用不存在的历史日期时间)将更新的语义时区。
  • 我以为我Etc/AoEtz 数据库中看到过,但事实并非如此。

参考:

[1] 地球上的任何地方 (AoE) 时区表示日期时间在“地球上的任何地方”到期的那一刻。它目前与豪兰岛 (UTC-12) 的时间相匹配。如果发明了 UTC-13 时区,它将被更新以跟踪它。

4

1 回答 1

1

据我所知,AoE 不是 IANA 定义的时区(AFAIK,历史上某个地理区域的所有偏移量列表)。

它更像是一个“概念”,一个特定日期在地球上任何地方都有效的想法。正如您所说,如果创建或删除更多时区,这种“有效”的概念将会改变。

我什至不知道日期/时间 API 是否可以自动正确处理 AoE - 也许我应该研究更多。但我的结论是,实现目标的唯一方法是手动检查:

  • 您可以检查所有可用的时区,看看日期是否在那里有效,与该区域的当前日期/时间进行比较
  • 您可以将 UTC+14 配置为要比较的偏移量,并进行一些计划作业(每天/每周/每次-IANA-publishes-a-new-version?)来检查所有区域并设置正确的区域(使用最大的偏移量?)。如果此区域有夏令时更改,您还必须小心,因为偏移量也会发生变化(以及如何处理重叠,当时钟向后移动 1 小时并且本地时间可能存在两次?)
于 2018-03-08T12:44:44.387 回答