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 Solution

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`

and`August 4, 2009`

yield one month or zero months difference? If you say it should yield one, then what about`July 31, 2009`

and`August 1, 2009`

? Isthata month? Is it simply the difference of the`Month`

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 than`lValue`

, then the return value will be negative. If you want an absolute difference, you can use this: