我必须处理包含“带有偏移量的日期”的输入文件(例如 2024-04-29+02:00)。基本上,我知道如何解析它......但我不知道我必须选择哪种目标类型 - 这里的目标是 Java。
只有
java.time.LocalDate
没有时间部分,但它也没有时区或偏移量。另一方面,所有具有偏移量或时区的类型也将具有时间部分。
当然,我可以将“带有偏移量的日期”解释为“带有偏移量的午夜日期”并将其解析为
java.time.OffsetDateTime
,这样 2024-04-29+02:00 将只是 2024-04-29T00 的缩写:00:00.0+02:00。也许甚至是这样的意思……
我试图找到任何可以解释如何解释带有偏移量的日期的参考资料,但我没有找到任何东西 - 特别是没有权威来源。不幸的是,最初的 ISO 8601 是付费墙后面的……但由于讨论 ISO 标准的各种来源都没有提到过“带有偏移量的日期”格式,我怀疑它在这里会有帮助。
输入文件的描述没有帮助;相应的字段仅被描述为“日期”。
有人知道如何处理“带偏移量的日期”吗?
最可能的解释是,以“带有偏移量的日期”格式存储,让位于另一个时区的任何人都知道特定时区的一天开始前还剩多少小时。
一个可能的有用场景是跟踪特定国家/地区假期开始前的小时数。
此外,另一件需要考虑的事情是,作为开发人员,您希望在此日期之后做什么。如果解释突然发生变化,是否会对您产生影响。
java.time.OffsetDateTime
没有任何问题。但是如果您喜欢挑剔类/数据类型命名与实际意图不匹配,您可能只需创建一个类扩展
OffsetDateTime
,但实际上做同样的事情,除了重命名为
OffsetDate
。(或者你也可以导入它,如果你已经在使用