是否有一种标准方法来指示 ISO8601 格式的时间戳中的无效值?

Is there a standard way to indicate an invalid value in an ISO8601-formatted timestamp?

我有一些代码可以创建 ISO8601 格式的时间戳,但如果传入日期的格式无效,转换就会失败。

我想知道是否存在以这种格式表示无效时间戳的标准方法?

维基百科提到 1583 年之前的年份在正常操作下不被处理,所以我的第一个想法是简单地将值设置为类似 0000-01-01T00:00:00Z 的值。如果有更标准的方法来指示无效值,我宁愿使用它。

ISO 8601 没有定义表示无效时间戳的字符串。它只定义了 valid 格式的字符串的样子。

此外,ISO 8601 使用 proleptic Gregorian calendar,这意味着所有正数年份均有效。它允许负数年份(根据协议),但不定义 BC/BCE 等纪元。换句话说,0001-01-01 前一天在公历中是 0000-12-310000-01-01 前一天是 -0001-12-31(第 0 年是闰年)。

就您如何在 您的 代码中表示 "invalid" 而言,这完全取决于语言和实现。在许多情况下,null 是合适的。如果您严格使用字符串,那么 "" 可能会更好。没有更多上下文很难说。