Предполагая, что день месяца не имеет значения (т.е. разница между 2011.1.1 и 2010.12.31 равна 1), с date1> date2, дающим положительное значение, а date2> date1 - отрицательное значение
((date1.Year - date2.Year) * 12) + date1.Month - date2.Month
Или, если вы хотите приблизительное количество «средних месяцев» между двумя датами, следующее должно работать для всех, но очень больших различий в дате.
date1.Subtract(date2).Days / (365.25 / 12)
Обратите внимание, что если вы должны использовать последнее решение, тогда ваши юнит-тесты должны указывать самый широкий диапазон дат, для которого ваше приложение разработано для работы и соответствующим образом оценивает результаты расчета.
Обновление (с помощью Gary )
Если использовать метод «средних месяцев», то для более «среднего числа дней в году» используется несколько более точный номер 365.2425 .