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

Datetime 在ISO8601格式的时间戳中,是否有一种标准方法来指示无效值?,datetime,timestamp,iso8601,Datetime,Timestamp,Iso8601,我有一些代码创建ISO8601格式的时间戳,但是如果传入日期的格式无效,转换就会失败 我想知道在这种格式中是否有表示无效时间戳的标准方法 Wikipedia提到1583年之前的几年不是在正常操作下处理的,所以我的第一个想法是简单地将值设置为0000-01-01T00:00:00Z。如果有更标准的方法来表示无效值,我宁愿使用它。ISO 8601没有定义表示无效时间戳的字符串。它只定义有效的格式化字符串的外观 此外,ISO 8601使用了a,这意味着所有正年份都有效。它允许负年份(通过协议),但不定

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

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


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

ISO 8601没有定义表示无效时间戳的字符串。它只定义有效的格式化字符串的外观

此外,ISO 8601使用了a,这意味着所有正年份都有效。它允许负年份(通过协议),但不定义诸如BC/BCE之类的ERA。换句话说,
0001-01-01
的前一天将是公历的前一天
0000-12-31
0000-01-01
的前一天是
-0001-12-31
(0年是闰年)


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

您想使用哪种编程语言?如果有标准的表示方式,这不是一个有效的时间戳吗?C++是我使用的,但它是我感兴趣的一般方法,而不是特定语言的细节。数据被交换为JSON字符串,所以空字符串听起来像是一个明智的方法。<代码> null <代码>(不作为字符串)在JSON中也是有效的。根据反序列化的内容,它可能更合适。例如,作为一名.Net开发人员,我可能会将该字段反序列化为一个
可空的
(又称
日期时间?
),在这种情况下,空字符串将自动通过,但空字符串将是一种情况,我必须不厌其烦地教解析器如何处理。可能对你的决策也有帮助。看起来很棒。