2012-06-03 169 views
25

我有兩個日曆,每個都會從calendar.SelectedDate返回一個DateTime。減去兩個日期

我該如何去相互減去兩個選定的日期,給我兩個選擇之間的天數?

有一個calendar.subtract(),但它需要一個TimeSpan而不是DateTime。

回答

36

您可以使用someDateTime.Subtract(otherDateTime),這將返回TimeSpan,它具有TotalDays屬性。

+0

您也可以通過'減()''一和TimeSpan'它會返回一個'DateTime'。 http://msdn.microsoft.com/en-us/library/ae6246z1%28v=vs.110%29.aspx – northben

25

只需使用:

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

需要注意的是,如果你想將它們視爲日期你應該使用

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

這樣,你不會得到不同的結果取決於時間。

(您可以使用Subtract方法,而不是-運營商,如果你想,但我個人覺得更清晰的使用操作。)

+14

這是一個大膽的人糾正SkeetCode(tm)。祝福Bhushan。 – keithl8041

3

想想吧。
你如何表達兩個日期之間的差異?再過幾天?
這就是爲什麼你需要的時間跨度

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); 
+0

實際上,使用TimeSpan來表示兩個日期之間的差異存在各種問題,但在*這種情況下它沒關係:) –

+0

感謝您的所有輸入。其實我只需要一天,我沒有看到Subtract方法也可以採用DateTime參數,這意味着我需要的只是這個:untilCalendar.SelectedDate.Subtract(fromCalendar.SelectedDate).Days –

+0

@sd_dracula:你確實更喜歡使用'減法'的方法而不是操作員? –