Subtracting two dates
Asked Answered
L

3

44

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.

Loom answered 3/6, 2012 at 15:54 Comment(0)
M
59

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

Maternal answered 3/6, 2012 at 15:56 Comment(1)
You can also pass Subtract() a TimeSpan and it will return a DateTime. msdn.microsoft.com/en-us/library/ae6246z1%28v=vs.110%29.aspxLaudanum
L
37

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.)

Lunneta answered 3/6, 2012 at 15:56 Comment(1)
It's a bold man who corrects SkeetCode(tm). Good work Bhushan.Measly
O
2

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);
Oversew answered 3/6, 2012 at 15:59 Comment(3)
Actually there are various issues with using TimeSpan to represent the difference between two dates, but in this case it's okay :)Lunneta
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).DaysLoom
@sd_dracula: Do you definitely prefer using the Subtract method rather than the operator?Lunneta

© 2022 - 2024 — McMap. All rights reserved.