Расчет возраста человека в годах на C#


Иногда вам захочется вычислить возраст человека или объекта и вернуть результат с указанием возраста в годах. Этот расчет прост в выполнении, если использовать свойства структуры DateTime NET framework и основные арифметические операторы.

Расчет возраста

Это может быть полезно для расчета возраста человека или объекта в годах. Это может быть по простым причинам, таким как отображение возраста в программном приложении или веб-сайте. Возможно, что продукты, которые продает компания, ограничены по возрасту и что по закону необходимо знать возраст клиента. Вычисление возраста очень просто с использованием свойств структуры DateTime и основных арифметических операторов.

Чтобы рассчитать возраст, мы должны сначала определить разницу в годах между датой рождения человека и текущей датой. Затем мы можем сравнить части месяца и дня двух дат, чтобы определить, следует ли скорректировать количество лет на единицу.

29 февраля

Есть люди, родившиеся 29 февраля в високосный год. Это необходимо учитывать при расчете возраста в течение невисокосного года. Считается, что человеку, родившемуся 29 февраля, 28 февраля исполняется восемнадцать лет. Многие алгоритмы определения возраста человека не учитывают этот особый случай и неверно рассчитывают их возраст как семнадцать лет до 1 марта. Метод, описанный в этой статье, обеспечивает такую возможность.

Создание метода

Мы создадим единый метод, который принимает параметр, содержащий дату рождения человека, и возвращает целое число, содержащее возраст в годах. Метод выполняет три ключевых действия:
  • Текущая дата присваивается переменной. Поскольку будет более одной операции, связанной с текущей датой, мы сохраним дату, чтобы избежать очень редких случаев, когда она может измениться во время выполнения метода.
  • Будет получена разница между частями года текущей даты и датой рождения. Это будет либо правильный возраст, либо на один год больше, чем правильный возраст.
  • Количество лет, рассчитанное на предыдущем шаге, будет добавлено к дате рождения. Если результирующая дата после текущей даты, мы знаем, что количество лет слишком велико. В этом случае мы вычтем единицу, чтобы определить возраст.
Метод заключается в следующем:

private static int CalculateAge(DateTime birthDate)
{
    DateTime today = DateTime.Today;
 
    int age = today.Year - birthDate.Year;
    if (birthDate.AddYears(age) > today)
    {
        age--;
    }
    return age;
}
Выполнение метода

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

DateTime birthDate = new DateTime(1992, 8, 3);
int age = CalculateAge(birthDate);
Console.WriteLine("{0}", age);  // Выведет "29"
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, си шарп, математика, алгоритмы




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Конвейеризация и постоянные соединения
Связные списки: введение
Методы array_filter(), array_map() и array_reduce() в PHP с примерами