是否有任何表示日期范围的标准?

Posted

技术标签:

【中文标题】是否有任何表示日期范围的标准?【英文标题】:Is there any kind of standard for representing date ranges? 【发布时间】:2013-12-23 05:03:27 【问题描述】:

ISO 8601 将日期表示为YYYY-MM-DD

它似乎没有就如何表示日期范围提供任何建议,例如:

2013-01-01 => 2013-06-31

ISO 8601 或其他标准是否为表示日期范围提供了合理的建议?

背景:这将用作DateRange 对象的toString() 方法的输出,然后可以使用parse() 方法解析输出。

【问题讨论】:

【参考方案1】:

ISO 8601 确实有一个表示日期范围的标准。要使用这种格式表示开始和结束日期,您可以编写:

2013-01-01/2013-06-31

注意正斜杠如何用作间隔指示符来分隔开始日期和结束日期。

更多信息请参见here。

【讨论】:

如果日期的前导部分相同,可以在结束日期省略。所以在这个例子中年份是一样的,可以写成2013-01-01/06-31【参考方案2】:

只是为了补充上面 Ben Smith 的回答,该标准还提到在某些情况下使用双连字符 (--) 作为 间隔指示符,而不是正斜杠 (/) .例如,在某些操作系统(例如 Windows)中禁止使用正斜杠的文件或目录名称中。

所以上面的例子是

2013-01-01--2013-06-31

2013-01-01--06-31

缩写形式

【讨论】:

缩写形式实际上是有效的 ISO8601 吗? --06-31 是一个有效的日期,但如果我们使用 -- 作为指示符,那么这里的日期写成 06-31 这似乎是无效的。 @Jezor Ben Smith 的答案 (en.wikipedia.org/wiki/ISO_8601#Time_intervals) 中的链接似乎是这样说的:“对于 / 表达式,如果最终值中缺少任何元素,则假定它们与包括时区在内的起始值相同。”所以它本身不是一个有效的日期,但它作为日期范围的结束是有效的。

以上是关于是否有任何表示日期范围的标准?的主要内容,如果未能解决你的问题,请参考以下文章

数据库中 日期的几种表示方法

获取表示当前日期的纪元时间戳范围

mysql时间类型

DataTables+Datepicker 按日期范围过滤表格

Matlab中处理日期与时间的函数

日期范围的通配符表示-附python代码