In C#/.NET TimeSpan
has TotalDays
, TotalMinutes
, etc. but I can't figure out a formula for total months difference. Variable days per month and leap years keep throwing me off. How can I get TotalMonths?
Edit Sorry for not being more clear: I know I can't actually get this from TimeSpan
but I thought using TotalDays
and TotalMinutes
would be a good example to express what I was looking for … except I'm trying to get Total Months.
Example: Dec 25, 2009 – Oct 6, 2009 = 2 TotalMonths. Oct 6th to Nov 5th equals 0 months. On Nov 6th, 1 month. On Dec 6th, 2 months
Best Answer
You won't be able to get that from a
TimeSpan
, because a "month" is a variable unit of measure. You'll have to calculate it yourself, and you'll have to figure out how exactly you want it to work.For example, should dates like
July 5, 2009
andAugust 4, 2009
yield one month or zero months difference? If you say it should yield one, then what aboutJuly 31, 2009
andAugust 1, 2009
? Is that a month? Is it simply the difference of theMonth
values for the dates, or is it more related to an actual span of time? The logic for determining all of these rules is non-trivial, so you'll have to determine your own and implement the appropriate algorithm.If all you want is simply a difference in the months--completely disregarding the date values--then you can use this:
Note that this returns a relative difference, meaning that if
rValue
is greater thanlValue
, then the return value will be negative. If you want an absolute difference, you can use this: