web-dev-qa-db-ja.com

2つの日付を引く

2つのカレンダーがあり、それぞれがcalendar.SelectedDateからDateTimeを返します。

選択した2つの日付を互いに減算し、2つの選択間の日数を取得するにはどうすればよいですか?

Calendar.Subtract()がありますが、DateTimeではなくTimeSpanが必要です。

34
sd_dracula

someDateTime.Subtract(otherDateTime)を使用できます。これは、TimeSpanプロパティを持つTotalDaysを返します。

45
C.Evenhuis

ただ使用する:

TimeSpan difference = end - start;
double days = difference.TotalDays;

これらをdatesとして扱いたい場合は、おそらく

TimeSpan difference = end.Date - start.Date;
int days = (int) difference.TotalDays;

そうすれば、時間に応じて異なる結果を得ることはありません。

(必要に応じて、-演算子の代わりにSubtractメソッドを使用できますが、個人的には、演算子を使用する方がわかりやすいと思います。)

30
Jon Skeet

.

DateTime dtToday = new System.DateTime(2012, 6, 2, 0, 0, 0); DateTime dtMonthBefore = new System.DateTime(2012, 5, 2, 0, 0, 0); TimeSpan diffResult = dtToday.Subtract(dtMonthBefore); Console.WriteLine(diffResult.TotalDays);

3
Steve