41

I have two calendars and each return a DateTime from calendar.SelectedDate.

How do I go about subtracting the two selected dates from each other, giving me the amount of days between the two selections?

There is a calendar.Subtract() but it needs a TimeSpan instead of DateTime.

Ufuk Hacıoğulları
  • 37,060
  • 12
  • 109
  • 152
sd_dracula
  • 3,672
  • 25
  • 85
  • 151

3 Answers3

53

You can use someDateTime.Subtract(otherDateTime), this returns a TimeSpan which has a TotalDays property.

C.Evenhuis
  • 25,310
  • 2
  • 59
  • 70
  • You can also pass `Subtract()` a `TimeSpan` and it will return a `DateTime`. http://msdn.microsoft.com/en-us/library/ae6246z1%28v=vs.110%29.aspx – northben Jul 16 '14 at 04:02
35

Just use:

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

Note that if you want to treat them as dates you should probably use

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

That way you won't get different results depending on the times.

(You can use the Subtract method instead of the - operator if you want, but personally I find it clearer to use the operator.)

Bhushan Firake
  • 9,142
  • 5
  • 42
  • 78
Jon Skeet
  • 1,335,956
  • 823
  • 8,931
  • 9,049
3

Think about it.
How do you express a difference betwen two dates? With another date?
That's why you need the TimeSpan

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);
Steve
  • 208,592
  • 21
  • 221
  • 278
  • Actually there are various issues with using TimeSpan to represent the difference between two dates, but in *this* case it's okay :) – Jon Skeet Jun 03 '12 at 16:04
  • Thanks for all the input. Actually I only need the day and I did not see that the Subtract method can also take a DateTime parameter meaning all I need is this: untilCalendar.SelectedDate.Subtract(fromCalendar.SelectedDate).Days – sd_dracula Jun 03 '12 at 16:07
  • @sd_dracula: Do you definitely prefer using the `Subtract` method rather than the operator? – Jon Skeet Jun 03 '12 at 16:54