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

  1. - 演算子を使用して C# で 2つの日付の差を計算する
  2. DateTime.Substract メソッドを使用して 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

DateTime.Substract メソッドを使用して C# で 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 Date

  • C# で現在の日付を時間なしで取得する
  • comments powered by Disqus