2个日期之间的天数

时间:2018-08-06 13:29:40

标签: c#

我试图找出如何找到两天内的日期之间的差异,但是当尝试以下操作时:

DateTime O = d_out;
DateTime I = d_in;
TimeSpan span = I.Subtract(O);
var days = span.Days;

(d_out和d_in是保存日期值的变量)

仅返回天数之间的差,不返回月份和年份的天数。

为使您更清楚地理解上面的代码,对于日期“ 06/08/18”(2018年8月6日)和“ 05/09/18”(9月18日)之间的差异返回“ -1”,我该怎么办?改为输出“ 30”?

3 个答案:

答案 0 :(得分:4)

span.TotalDays将为您提供总天数

是的

使用系统;

public class Program
{
    public static void Main()
    {
        var d1=DateTime.Parse("1/2/18");
        var d2=DateTime.Parse("2/3/18");
        Console.WriteLine(d2.Subtract(d1).TotalDays);
    }
}

输出32

看到我的Fiddle

答案 1 :(得分:2)

我已经在C#交互式环境中运行了它,并且效果很好:

var start = new DateTime(2018, 8, 6);
var end = new DateTime(2018, 9, 5);
var span = end - start;
span.Days
30

您确定这不是日期格式问题,例如您正在使用将第一个数字解释为月份的美国语言环境来运行?

我建议您在调试时验证分配两个变量后的确切日期。

答案 2 :(得分:1)

您要将月份解析为分钟。 In DateTime string formatting, M is month and m is minute.

using System;

public class Program
{
  public static void Main()
  {
      var d1=new DateTime(2018, 1, 6, 0, 8, 0);
      var d2=new DateTime(2018, 1, 5, 0, 9, 0);
      var span = d2.Subtract(d1);
      Console.WriteLine(span.TotalDays);
      Console.WriteLine(span.Days);
  }
}

结果:

-0.999305555555556
0