是否有一种标准方法来指示 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-31
。 0000-01-01
前一天是 -0001-12-31
(第 0 年是闰年)。
就您如何在 您的 代码中表示 "invalid" 而言,这完全取决于语言和实现。在许多情况下,null
是合适的。如果您严格使用字符串,那么 ""
可能会更好。没有更多上下文很难说。
我有一些代码可以创建 ISO8601 格式的时间戳,但如果传入日期的格式无效,转换就会失败。
我想知道是否存在以这种格式表示无效时间戳的标准方法?
维基百科提到 1583 年之前的年份在正常操作下不被处理,所以我的第一个想法是简单地将值设置为类似 0000-01-01T00:00:00Z
的值。如果有更标准的方法来指示无效值,我宁愿使用它。
ISO 8601 没有定义表示无效时间戳的字符串。它只定义了 valid 格式的字符串的样子。
此外,ISO 8601 使用 proleptic Gregorian calendar,这意味着所有正数年份均有效。它允许负数年份(根据协议),但不定义 BC/BCE 等纪元。换句话说,0001-01-01
前一天在公历中是 0000-12-31
。 0000-01-01
前一天是 -0001-12-31
(第 0 年是闰年)。
就您如何在 您的 代码中表示 "invalid" 而言,这完全取决于语言和实现。在许多情况下,null
是合适的。如果您严格使用字符串,那么 ""
可能会更好。没有更多上下文很难说。