我需要找出两个日期之间的天数差异。
例如:
输入:**startDate** = 12-31-2012 23hr:59mn:00sec, **endDate** = 01-01-2013 00hr:15mn:00sec
预期输出:1
我尝试了以下方法:
(dt1-dt2).TotalDays
并转换为整数,但没有给我适当的答案,因为必须将 double 转换为 int - 尝试过 Math.Ceiling、Convert.To...dt1.day - dt2.day
不能跨月工作dt.Substract()
具有与上述选项 1 相同的输出。
以上都不起作用,所以我最终编写了以下代码。代码运行良好,但我觉得必须有一个只有几行代码的解决方案。
public static int GetDifferenceInDaysX(this DateTime startDate, DateTime endDate)
{
//Initializing with 0 as default return value
int difference = 0;
//If either of the dates are not set then return 0 instead of throwing an exception
if (startDate == default(DateTime) | endDate == default(DateTime))
return difference;
//If the dates are same then return 0
if (startDate.ToShortDateString() == endDate.ToShortDateString())
return difference;
//startDate moving towards endDate either with increment or decrement
while (startDate.AddDays(difference).ToShortDateString() != endDate.ToShortDateString())
{
difference = (startDate < endDate) ? ++difference : --difference;
}
return difference;
}
注意:我在 while 循环迭代中没有任何性能问题,因为最大差异不会超过 30 到 45 天。