Как рассчитать возраст по дате рождения в 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# — Комментарии (3)

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

  2. Основные плюсы погрузчиков DISD
    Помимо очевидных достоинств по качеству вдобавок стоимости сплошь специальная строительная техника данного бренда отличается максимальной производительностью. Спецтехника южнокорейского бренда польщенно эффективная. Надежность техники обеспечена улучшением технических характеристик и совершенствованием ранее существующих погрузчиков. Конструкция погрузчика рассчитана до гроба долгосрочную работу. Спецтехника проста в эксплуатации, к тому же эксплуатационные затраты подобный приемлемы.
    Две модели DISD - это DISD SD200 как и DISD SD300

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

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


*

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