您如何永远(无限期地)代表iso8601?

Chi*_*ani 5 date iso8601

一个API定义了一个日期应以iso8601的形式发送,但是我们有一个要求将“永远”发送为一个日期,而该标准似乎并未涵盖这一点。谁能提出比9999年12月31日更好的解决方案?是否有其他更合适的标准?

hro*_*tyr 4

引用 ISO 8601:2004(E):

3.5 扩展 经信息交换合作伙伴双方同意,允许扩展标识日历年份的部分,否则该部分仅限于四位数字。这使得能够引用完整表示支持的范围之外的日历年中的日期和时间,即在年初[0000]之前或在年底[9999]之后。

同样相关的可能是第3.7 节“相互协议”,它基本上说您可以自由定义自己的表示,只要您不干扰 ISO 8601 中定义的表示。因此 9999-12-32 或 9999-13-00 可以双方就您提出的价值达成一致forever

至于常见做法是什么,我想说这取决于情况。

只要有可能,我会选择 3.7。但评估您在整个设置中的角色很重要。例如,如果您为了方便或未来兼容性而在自己的组件集中使用第三方 API,那么应该没有任何问题。如果您是一个更大系统的一部分,那么您必须说服数十个其他系统方/组件/模块/等。我想说这不值得这么麻烦。

检查遗留代码也非常重要。至少要制定一个如何进行迁移的计划,以防它打破令人难以置信的设置。这可以是任何事情,从记录你的 API“扩展”到实际向遗留代码维护者发送补丁。

  • 我认为“永远”是个好主意 (3认同)