两个日期之间的天差

时间:2010-02-24 22:56:11

标签: c#

我一直在尝试很多方法来计算两个日期之间的总天数,我的意思是,计算整天。我需要的一个例子:

   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  

3 个答案:

答案 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