Разная длина месяца? Какой месяц это займет? промежуток времени не привязан к определенному году или месяцу в году. Вы можете только посчитать дни между двумя датами:
Timspan span = date2 - date1;
Console.Writeline("Days between date1 and date2: {0}", span.Days);
Считая из DateTime.MinValue, просто берите год 0001 и отсчитывайте месяцы с января. Я не думаю, что это имеет практическое значение.
EDIT:
Была другая идея. Вы можете посчитать месяц с даты1:
// primitive, inelegant, but should work if date1 < date2
int years = date2.Year - date1.Year;
int month = date2.Month - date1.Month;
if (month < 0)
{
years -= 1;
month += 12;
}
Console.Writeline("{0}Y {1}M", years, month);
Проблема здесь в том, что вы просто игнорируете дни. В конце концов, это не очень хорошее решение.