我正在指定一个向用户显示时间段的应用程序。目标是以简单视图(无时间、无时区)和详细视图(日期和时间,以及时区数据)显示时间段。简单视图应该是明确的,换句话说,用户可以浏览它,他们对所见内容的假设是正确的(它们在本地时区有效)。
对于全局周期的结束,以 AoE 时区 [1] 显示日期将解决此问题。例如,提交截止日期可能显示为2018-04-03
(实际为2018-04-03 23:59:59 AoE
)。这意味着只要是 4 月 3 日地球上的某个地方,就可以接受提交。
但我也想指出一个全球时期的开始。例如,如果提交在April 2 2018 00:01
开放,则在地球上的某个地方是 4 月 2 日时立即接受它们。(目前为 UTC+14,与莱恩群岛匹配。
我看不到使用 AoE 派生全局开始时间的方法。是否有等效的 AoE(标准化语义时区)来跟踪全局开始时间?
笔记:
- 硬编码 UTC-12 和 UTC+14 是现代的简单答案。但我正在寻找语义时区,如果值发生变化(并且不引用不存在的历史日期时间),这些时区将被更新。
- 我以为我在tz数据库中看到了
Etc/AoE
,但事实并非如此。
引用:
- 敖斌
- 世界协调时-12:00
- 世界协调时+14:00
[1] 地球上任何地方 (AoE) 时区表示日期时间在"地球上任何地方"到期的时刻。它目前与豪兰岛(UTC-12)的时间相匹配。如果发明了UTC-13时区,它将更新以跟踪它。
据我所知,AoE 不是 IANA 定义的时区(AFAIK,历史上某个地理区域的所有偏移量列表)。
它更像是一个"概念",一个特定日期在地球上任何地方都有效的想法。正如您所说,如果创建或删除更多时区,这种"有效"的概念将发生变化。
我什至不知道日期/时间 API 是否可以自动正确处理 AoE - 也许我应该学习更多。但我的结论是,实现目标的唯一方法是手动检查:
- 您可以检查所有可用的时区,并查看该日期是否有效,与该区域的当前日期/时间进行比较
- 您可以将 UTC+14 配置为要比较的偏移量,并进行一些计划作业(每日/每周/每次-IANA-发布新版本?)来检查所有区域并设置正确的区域(偏移量最大?您还必须注意此区域是否有夏令时更改,因为偏移量也会更改(当时钟向后移动 1 小时并且本地时间可能存在两次时,如何处理重叠?