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

为何DateTime.AddMonths(3).AddMonths(3)与AddMonths(6)结果不同?

为什么两次AddMonths(3)和一次AddMonths(6)结果不同?

这是因为.NET的DateTime.AddMonths方法有个关键行为规则:当原日期的日数超过目标月份的最大天数时,会自动将日期调整为目标月份的最后一天;如果目标月份存在对应日数,则直接保留该日数。

我们结合你的场景拆解两种操作的过程:

  • 操作一:DateTime.Today.AddMonths(3).AddMonths(3)(当前日期2023-01-31)

    1. 第一步:2023-01-31 添加3个月,目标月份是4月。4月最多只有30天,原日期的31日超过了这个天数,所以自动调整为2023-04-30。
    2. 第二步:2023-04-30 添加3个月,目标月份是7月。7月有30日,直接对应得到2023-07-30。
  • 操作二:DateTime.AddMonths(3 * 2)(即直接添加6个月)
    2023-01-31 添加6个月,目标月份是7月。7月有31日,和原日期的日数一致,所以直接得到2023-07-31。

这就是两种操作结果不同的核心原因——分步添加时,第一次调整后的日期会影响第二次计算的起始值,和直接一步添加的逻辑路径不一样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:21:02