Я писал конвертер, который принимает человека на дату рождения и производит их возраст в годах. Я написал что-то вроде:
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
. Кто-нибудь знает причину?