2012-06-03 134 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:你确实更喜欢使用'减法'的方法而不是操作员? –