Как рассчитать возраст по дате рождения в C#

Казалось бы, все просто. Берем текущую дату, вычитаем из нее дату рождения, получаем собственно возраст. Но работа с датами в Net сделана крайне криво, приходится постоянно мастерить разнообразные костыли.

Методы вычитания дат вроде Subtract возвращают не DateTime, а TimeSpan. Максимальная единица времени, которую можно извлечь из TimeSpan автоматом - дни. Никаких месяцев и лет. Можно конечно высчитывать годы из дней (дни/365 и тд) - но работает это не очень хорошо.

Деваться некуда, применим костыль со Stack Owerflow

DateTime nowDate = DateTime.Today;
int age = nowDate.Year - birthDate.Year;
if (birthDate > nowDate.AddYears(-age)) age--;

Смысл костыля очень прост - сейчас 15 февраля. Если вы родились 16 февраля и позднее, простое вычитание лет даст результат на год больше. Его и исправляем в костыле.


Комментарии

Как рассчитать возраст по дате рождения в C# — 1 комментарий

  1. Привет! Вы можете рассчитать возраст в днях с помощью простой формулы вычитания, но вы не можете вычислить возраст в месяцах или годах с помощью этого метода.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>