【发布时间】:2020-07-17 19:37:55
【问题描述】:
我不确定 YAML“时间戳”应该如何表示。从YAML 1.2 specification 看来,YAML 似乎只是假设如果您有一个看起来像 ISO 8601 日期的字符串格式的值,那么除非您另有说明,否则它将被解析为日期。以下是规范中的几个示例:
date: 2002-12-14
not-date: !!str 2002-04-28
Timestamp Language-Independent Type for YAML™ Version 1.1 工作草案(从 2005 年开始,目前是 15 年前!)似乎表明应该使用 tag:yaml.org,2002:timestamp 形式的特殊标签。它还表示!!timestamp 的简写。
在 Java 中使用 SnakeYAML Engine v2.0 (org.snakeyaml:snakeyaml-engine:2.0) 我尝试解析 2002-12-14 表单,得到一个字符串作为解析值,而不是任何类型的日期对象。我看到 SnakeYAML 引擎存储库有一个使用 !!timestamp 方法的 example(例如 !!timestamp 2020-03-24T12:34:00.333),但这是最近的更改,我确定此支持是否已经发布。
我尝试了fooBar: !!timestamp 2020-03-24 和fooBar: !!timestamp 2020-03-24T12:34:00.333 两种形式,但 SnakeYAML 引擎报告:
could not determine a constructor for the tag tag:yaml.org,2002:timestamp
那么在 YAML 中表示日期(特别是带有 YYYY-MM-DD 的本地日期)的官方方式是什么,最新的 YAML 规范中是否反映了正确的方式? SnakeYAML Engine 是否支持官方的 YAML 日期方法?
【问题讨论】: