Расчет возраста человека в годах на 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.