两个日期之间的天差

Ben*_*zco 37 c# datetime

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

   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  
Run Code Online (Sandbox Code Playgroud)

Jos*_*osh 64

可以减去DateTime以获得TimeSpan.TimeSpan有一个TotalDays,它是天数(包括小数天).

int DaysBetween(DateTime d1, DateTime d2) {
    TimeSpan span = d2.Subtract(d1);
    return (int)span.TotalDays;
}
Run Code Online (Sandbox Code Playgroud)

注意时间跨度已签名.如果d1 = 1/9/11且d2 = 1/11/11,则d1.subtract(d2)= -2天的时间跨度.因此,如果您想使用时间跨度来确定日期是否在彼此的X天内,您需要获取总天数的绝对值...

Math.Abs(span.TotalDays)
Run Code Online (Sandbox Code Playgroud)


cas*_*One 16

您可以在两个实例上使用减法运算符DateTime(或者DateTimeOffset,因为它具有相同的减法运算符,并且它是用于.NET中的日期值推荐结构)来获取TimeSpan实例.

完成后,您可以调用该Days属性以获取TimeSpan代表的整天数.

如果您想要整数和分数天数,那么请查看该TotalDays属性.

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


Mik*_*all 11

DateTime dtOne;
DateTime dtTwo;

// to get the total days in between
int answer = (dtTwo - dtOne).TotalDays
Run Code Online (Sandbox Code Playgroud)

  • `TimeSpan.TotalDays`返回一个double,所以你需要在那里转换为`int`. (8认同)
  • 实际上,如果您希望 int 作为返回类型,则可以使用 TimeSpan.Days (2认同)