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
メソッドが当然の選択になります。