如何在 C# 中計算兩個日期之間的差異

Puneet Dobhal 2023年10月12日
  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