You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

日期添加含年/月的可变时长时间间隔的规范方法问询

关于ISO-8601时间间隔与日期计算的疑问

ISO-8601定义了时间间隔的表示方式,例如P1M代表1个月。

不过,该标准并未强制规定如何确定给定日期后1个月的具体日期。

我了解到SQLite的实现逻辑是:针对YYYY-MM-DD格式的日期,添加1个月即直接给月份值(MM)加1,再做标准化处理——如果月份值超过12则年份加1;如果日期值(DD)大于结果月份的天数,则自动进位到下一个月。

但这种方式会产生不一致的计算结果:

  • 2020-01-29 + P1M = 2020-02-29
  • 2020-01-30 + P1M = 2020-03-01
  • 2020-01-31 + P1M = 2020-03-02
  • 2020-02-01 + P1M = 2020-03-01 ‽,注意此结果早于前一个计算结果

此外,当时间间隔同时包含月和天这类不同单位时,计算顺序也会影响最终结果:

  • 2020-01-30 + P3D + P1M = 2020-02-02 + P1M = 2020-03-02
  • 2020-01-30 + P1M + P3D = 2020-03-01 + P3D = 2020-03-04,先加月份得到的结果更晚

问题:当时间间隔包含年或月这类可变时长的单位时,是否存在添加时间间隔到日期的标准规范方法?

内容的提问来源于stack exchange,提问作者Benoit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:45:31