title: Why does TimeSpan not have a Years property?
body: <p>I was writing a converter that takes a person's date of birth and produces their age in years. I wrote something that looked like this:</p>
  
  <pre><code>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();
      }
  }
  </code></pre>
  
  <p>I found that there is no <code>Years</code> property on the <code>TimeSpan</code> that results from the subtraction of two <code>DateTime</code> objects. I was somewhat surprised by this. I thought about why there might not be a <code>Years</code>. I figured that it might be because of the leap day, but by that logic, there shouldn't be <code>Days</code> because of daylight savings. </p>
  
  <p>The absence of <code>Months</code> made sense, since there is no standard month length.</p>
  
  <p>I was able to write some different code to get the correct age, but I still really want to know why there is no <code>Years</code> or <code>Weeks</code> property on <code>TimeSpan</code>. <strong>Does anyone know the reason?</strong></p>