回答:
次の例は、これを行う方法を示しています。
DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);
実行すると、日付と時刻の間に30分の差があるため、これは「30」を出力します。
の結果DateTime.Subtract(DateTime x)
は、他の有用なプロパティを提供するTimeSpanオブジェクトです。
TotalMinutes
ください!(ではないMinutes
)
あなたはTimeSpan
構造体が欲しい:
TimeSpan diff = dateTime1 - dateTime2;
TimeSpanオブジェクトは、日数、時間、分、秒、および秒の端数の正または負の数として測定される時間間隔(時間または経過時間の期間)を表します。TimeSpan構造体を使用して時刻を表すこともできますが、時刻が特定の日付と無関係の場合のみです。
この構造から日、時間、分、秒、ミリ秒を戻すには、さまざまな方法があります。
あなただけの違いに興味があるなら:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
順序に関係なく、時間の間に正の差を与えます。
時間コンポーネントを取得したが、時刻が午前0時までに分割される可能性がある場合、実際の差を取得するには、スパンに24時間を追加する必要があります。
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
var startDate = new DateTime(2007, 3, 24);
var endDate = new DateTime(2009, 6, 26);
var dateDiff = endDate.Subtract(startDate);
var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365,
(int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);
Console.WriteLine(date);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss"))
。参照:MSDNカスタムTimeSpanフォーマット