C# で 2つの日付の差を計算する方法

Puneet Dobhal 2023年10月12日
  1. C# で - 演算子を使用して 2つの日付の差を計算する
  2. C# で DateTime.Substract メソッドを使用して 2つの日付の差を計算する
C# で 2つの日付の差を計算する方法

この記事では、C# で 2つの日付の差を計算するさまざまな方法について説明します。日付の表現には DateTime 構造を使用し、結果を保存するには TimeSpan 構造を使用します。

次の日付の定義を使用して、DateTime コンストラクターを使用して日付のインスタントを指定します。

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

お気づきかもしれませんが、宣言の日付の要素には年、月、日が含まれています。

それでは、2 日間の差を日数で計算するさまざまな方法を見てみましょう。

C# で - 演算子を使用して 2つの日付の差を計算する

最も簡単な解決策は、 - 演算子を使用して 2つの日付を減算することです。オブジェクトは同じデータタイプ 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

C# で DateTime.Substract メソッドを使用して 2つの日付の差を計算する

DateTime.Subtract メソッドは、これを実現するもう 1つの効率的な方法です。2つの日付の差を返し、結果は 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 クラスの 2つのプロパティセットを使用して、必要に応じてより多くの情報を抽出することもできます。以下のサンプルコードのように、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