TimeSpan - правильный способ справиться с этим, однако, если вы не хотите выполнять преобразование месяцев / лет самостоятельно, вы всегда можете использовать какой-то рекурсивный метод для вычитания лет, пока вы не доберетесь до нужного года, месяцев до Вы попадаете в правильный месяц, дни, пока не дойдете до правильного дня и т. д. Однако это будет отстой и будет ужасно.
Кроме того, вам понадобится специальный объект, который будет содержать данные для вас.
Черновая резьба будет что-то вроде
DateTime original = [Whatever]
DateTime compare = [Whatever]
DateTimeDiff difference = GetDifference(original, compare)
GetDifference(DateTime original, DateTime compare)
{
DateTimeDiff difference = new DateTimeDifference
while(!original.Equals(compare) && original.Year >= compare.Year)
{
original.AddYears(-1);
difference.Years++;
}
<snip... //more code to do the same thing for months, days, hours, etc.)
}
Как я уже сказал, это было бы ужасно, но вы могли бы сделать это.