ASP.NET计算两个日期之间相差天数(C#/[VB.NET] 两种写法)
时间:2026-07-09 14:20:06 来源:阿里站 作者:SKY 阅读:
ASP.NET C# 获取两个日期间隔天数
一、基础计算原理
DateTime 相减返回 TimeSpan 对象,TimeSpan.Days 直接获取相差完整天数; 用 .Date 剥离时分秒,避免时间干扰计算结果。
基础示例代码
<pre class="language-csharp"><code> // 定义起止日期 DateTime start = new DateTime(2026, 7, 1); DateTime end = new DateTime(2026, 7, 10); // 只对比日期,忽略时分秒 TimeSpan ts = end.Date - start.Date; int diffDay = ts.Days; // 纯间隔天数(不含起始日) int totalDay = ts.Days + 1; // 包含首尾总天数 </code></pre>二、通用封装方法(项目直接复用)
<pre class="language-csharp"><code> /// <summary> /// 获取两日期间隔天数 /// </summary> /// <param name="start">开始日期</param> /// <param name="end">结束日期</param> /// <param name="includeAll">是否包含首尾日期</param> public static int GetDateDiff(DateTime start, DateTime end, bool includeAll = false) { TimeSpan span = (end.Date - start.Date).Duration(); return includeAll ? span.Days + 1 : span.Days; } // 调用 int dayNum = GetDateDiff(DateTime.Parse("2026-07-01"), DateTime.Parse("2026-07-08"), true); </code></pre>.Duration() 自动处理开始日期大于结束日期,返回正数天数。
三、拓展:计算工作日(剔除周六周日)
<pre class="language-csharp"><code> public static int GetWorkDay(DateTime start, DateTime end) { int count = 0; DateTime temp = start.Date; while (temp <= end.Date) { // 排除周六、周日 if (temp.DayOfWeek != DayOfWeek.Saturday && temp.DayOfWeek != DayOfWeek.Sunday) count++; temp = temp.AddDays(1); } return count; } </code></pre>四、新手避坑要点
- 不写
.Date会受时分秒影响,跨天不足 24 小时会少算 1 天; Days仅为差值,统计包含起止的总天数必须 + 1;- WebForm、ASP.NET MVC、.NET Core 代码完全通用。
五、VB.NET简易写法(老项目)
<pre class="language-vb"><code> Dim start As DateTime = New DateTime(2026,7,1) Dim endDate As DateTime = New DateTime(2026,7,10) Dim ts As TimeSpan = endDate.Date - start.Date Dim dayDiff As Integer = ts.Days </code></pre>本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载
发表评论
共有0条评论