关于c#:两个日期之间的天数差异


Days difference between two dates

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
   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


可以减去datetime得到时间跨度。时间跨度的总天数是天数(也包括分数天)。

1
2
3
4
int DaysBetween(DateTime d1, DateTime d2) {
    TimeSpan span = d2.Subtract(d1);
    return (int)span.TotalDays;
}

注:时间跨度有符号。如果d1=1/9/11,d2=1/11/11,则d1.减去(d2)=2天的时间跨度。所以如果你想用一个时间跨度来确定日期是否在X天之内,你需要取总天数的绝对值…

1
Math.Abs(span.TotalDays)


您可以在DateTimeDateTimeOffset的两个实例上使用减法运算符,因为它具有相同的减法运算符,并且它是用于.net中日期值的建议结构,因此可以获得TimeSpan实例。

一旦你有了它,你就可以调用Days属性来获得TimeSpan所代表的整个天数。

如果您想要完整的和小数的天数,那么可以查看TotalDays属性。

在您的特定情况下,您似乎希望将1添加到Days属性返回的任何值中,因为您的自定义计算表明,对于表示相同值的两个DateTime实例,结果是1。


1
2
3
4
5
DateTime dtOne;
DateTime dtTwo;

// to get the total days in between
int answer = (dtTwo - dtOne).TotalDays