如何在 C# 中计算两个日期之间的差异

Puneet Dobhal 2023年1月30日 2020年6月9日
  1. 使用 - 运算符计算 C# 中两个日期之间的差异
  2. 使用 DateTime.Substract 方法在 C# 中计算两个日期之间的差异
如何在 C# 中计算两个日期之间的差异

在本文中,我们将介绍如何计算 C# 中两个日期之间的差的各种方法。我们将使用 DateTime 结构来表示日期,并使用 TimeSpan 结构体来存储结果。

我们将使用以下日期定义,使用 DateTime 构造函数指定日期。

DateTime sample_date = new DateTime(2010, 6, 14);

你可能会注意到,声明中日期的元素包括年,月和日。
现在,让我们看一下计算两天之间天数的差异的各种方法。

使用 - 运算符计算 C# 中两个日期之间的差异

解决方案中最简单的方法是使用 - 运算符将两个日期直接相减。由于对象具有相同的数据类型 DateTime,因此可以直接将它们相减。以下代码描述了此方法。

using System;
public class Sample
{
    public static void Main() 
    {
        DateTime date_1 = new DateTime(2019, 02, 12);
        DateTime date_2 = new DateTime(2020, 04, 10);
        
        /*Substraction (minus) of same data types yields difference in days*/
        Console.WriteLine("Difference in days: " + (date_2 - date_1).Days);
    }
}

输出:

Difference in days: 423

使用 DateTime.Substract 方法在 C# 中计算两个日期之间的差异

DateTime.Subtract 方法是另一种有效的方法。它返回两个日期之间的差,结果可以存储在 TimeSpan 数据类型中。

using System;
public class Sample
{
    public static void Main() 
    {
        DateTime date_1 = new DateTime(2019, 02, 12);
        DateTime date_2 = new DateTime(2020, 04, 10);
        
        TimeSpan Diff_dates = date_2.Subtract(date_1); 
        Console.WriteLine("Difference in days: " + Diff_dates.Days);
    }
}

输出:

Difference in days: 423

DateTime 结构体也可以用来指定日期和时间。在这种情况下,使用 DateTime.Subtract 方法时,请确保日期在相同的时区中。否则,结果将包括时区之间的差异。

此外,使用 TimeSpan 类的双重属性,我们还可以根据需要提取更多信息。像下面的示例代码一样,我们使用 Total 前缀-TotalDays 来获取分数形式的结果。

using System;
public class Sample
{
    public static void Main() 
    {
        /*Definations include time of day */
        DateTime date_1 = new DateTime(2019, 02, 12, 8, 0, 0);
        DateTime date_2 = new DateTime(2020, 04, 10, 12, 0, 0);
        
        TimeSpan Diff_dates = date_2.Subtract(date_1); 
        Console.WriteLine("Difference in Days = " + Diff_dates.Days);  
        Console.WriteLine("Exact timespan in Days = " + Diff_dates.TotalDays); 
    }
}

输出:

Difference in Days = 423
Exact timespan in Days = 423.166666666667

在最终确定适合你的用法的方法时,请注意 - 运算符方法未考虑日期的时区因素。因此,如果你使用的日期指定了时区,则 DateTime.Subtract 方法将成为显而易见的选择。

相关文章 - Csharp DateTime