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

DateTime日期相减疑问:为何两日期间隔返回0而非1?

为什么这段代码的日期差值返回0而非1?

代码示例:

MessageBox.Show($"{(DateTime.Now.AddDays(1)-DateTime.Now).Days}");

原因

问题出在两次调用DateTime.Now上:

  • 第一次调用DateTime.Now获取当前时间,调用AddDays(1)得到24小时后的时间;
  • 第二次调用DateTime.Now时,已经过了极短的时间(比如几毫秒),此时的时间比第一次晚一点;
  • 两者的差值是不到24小时(比如23小时59分59秒多),而TimeSpan.Days属性只统计完整的24小时周期数,所以结果是0。

解决办法

有两种常见的修复方式:

  1. 先把当前时间存入变量,避免两次调用的时间差:

    var currentTime = DateTime.Now;
    MessageBox.Show($"{(currentTime.AddDays(1) - currentTime).Days}");
    

    这样差值正好是24小时,Days返回1。

  2. 如果只关心日期的差值(忽略具体时间),可以使用Date属性取日期部分计算:

    MessageBox.Show($"{(DateTime.Now.AddDays(1).Date - DateTime.Now.Date).Days}");
    

    不管当前时间是几点,日期差都会是1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:54:51