Я писал конвертер, который принимает человека на дату рождения и производит их возраст в годах. Я написал что-то вроде:
public class DateOfBirthToAgeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var date = value as DateTime?;
        if (date == null) return null;
        return (DateTime.Now - date).Years;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
Я обнаружил, что на TimeSpan нет свойства Years, которое является результатом вычитания двух объектов DateTime. Я был несколько удивлен этим. Я думал о том, почему не может быть Years. Я понял, что это может быть из-за високосного дня, но по этой логике не должно быть Days из-за дневного сбережения.
Отсутствие Months имело смысл, поскольку нет стандартной длины месяца.
Мне удалось написать какой-то другой код, чтобы получить правильный возраст, но я все еще очень хочу знать, почему в TimeSpan нет свойства Years или Weeks.  Кто-нибудь знает причину?
