计算日期所涵盖的包含日期的数量
我想要计算两个DateTimes
之间涵盖的日期数(包括在内)。
这不是.TotalDays
作为小于24小时的时段可能仍然通过重叠两个不同的日期返回“2”。 同样,相隔两分钟的日期仍应返回“1”。
例如:
2012-2-1 14:00 to 2012-2-2 23:00 -> 2 (1st and 2nd Feb) 2012-2-1 14:00 to 2012-2-2 10:00 -> 2 (1st and 2nd Feb) 2012-2-1 23:00 to 2012-2-2 00:00 -> 2 (1st and 2nd Feb) 2012-2-1 23:00 to 2012-2-3 00:00 -> 3 (1st, 2nd, 3rd Feb) 2012-2-1 14:00 to 2012-2-1 15:00 -> 1 (1st Feb) 2012-2-1 14:00 to 2012-2-1 14:00 -> 1 (1st Feb) 2012-1-1 00:00 to 2012-12-31 23:59 -> 366 (All of 2012)
我可以使用以下代码获得此function:
DateTime dt1 = new DateTime(2000,1,2,12,00,00); DateTime dt2 = new DateTime(2000,1,3,03,00,00); int count = 0; for (DateTime date = dt1; date.Date <= dt2.Date; date = date.AddDays(1)) count++; return count;
有没有更好的办法?
为什么不呢:
int count = dt1.Date.Subtract(dt2.Date).Duration().Days + 1;
使用.Date
将Date标准化为午夜(0:00),将Days
加1以获取不同日期的数量,而不仅仅是两者之间的天数。
使用Duration
可确保您始终获得肯定答案。
也许简单
TimeSpan duration = dt2.Date - dt1.Date; int days = duration.Days + 1;
演示
DateTime d1=DateTime.MinValue; DateTime d2=DateTime.MaxValue; TimeSpan span=d2-d1; int counter = span.Days + 1;
Math.Ceiling((d2 – d1.Date).TotalDays)
试过你提到的所有案例。 结果是预料之中的! 希望能帮助到你。
上述就是C#学习教程:计算日期所涵盖的包含日期的数量分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1018380.html