我一直在尝试很多方法来计算两个日期之间的总天数,我的意思是,计算整天。我需要的一个例子:
START DATE END DATE Day Count
24/02/2010 16:26 24/02/2010 16:26 1
20/02/2010 18:16 24/02/2010 16:26 5
31/12/2009 20:00 24/02/2010 16:26 56
15/07/2009 20:59 24/02/2010 16:26 225
答案 0 :(得分:64)
可以减去DateTime以获得TimeSpan。 TimeSpan有一个TotalDays,它是天数(包括小数天)。
int DaysBetween(DateTime d1, DateTime d2) {
TimeSpan span = d2.Subtract(d1);
return (int)span.TotalDays;
}
注意时间跨度已签名。如果d1 = 1/9/11且d2 = 1/11 / 11,则d1.subtract(d2)= -2天的时间跨度。因此,如果您想使用时间跨度来确定日期是否在彼此的X天内,您需要获取总天数的绝对值...
Math.Abs(span.TotalDays)
答案 1 :(得分:16)
您可以在subtraction operator(或DateTime
的两个实例上使用DateTimeOffset
,因为它具有相同的subtraction operator,并且是recommended structure to use for date values in .NET )获得TimeSpan
实例。
完成后,您可以致电Days
property获取TimeSpan
代表的整天天数。
如果您想要整数和小数天数,请查看TotalDays
property。
在您的特定情况下,您似乎希望将{1}添加到Days
属性返回的任何值,因为您的自定义计算表明对于表示相同值的两个DateTime
实例,结果是1。
答案 2 :(得分:11)
DateTime dtOne;
DateTime dtTwo;
// to get the total days in between
int answer = (dtTwo - dtOne).TotalDays