Простая задача — определить возраст человека на текущую дату по его дате рождения — часто встречается в разработке. Это может понадобиться в формах регистрации, анкетах, расчете возраста для скидок и т. д.
Покажем, как с помощью C# можно корректно рассчитать возраст на сегодняшний день, учитывая, прошёл ли день рождения в этом году.
using System; using System.Collections.Generic; using System.Linq; using System.Net; namespace Work { class Program { static void Main(string[] args) { var date= CalculateAge(new DateTime(1980, 12, 22)); Console.WriteLine($"Ваш возраст: {date}"); Console.ReadKey(); } public static int CalculateAge(DateTime BirthDate) { int YearsPassed = DateTime.Now.Year - BirthDate.Year; if (DateTime.Now.Month < BirthDate.Month || (DateTime.Now.Month == BirthDate.Month && DateTime.Now.Day < BirthDate.Day)) { YearsPassed--; } return YearsPassed; } } }
Как это работает?
- Вычисляется разница между текущим годом и годом рождения.
- Если день рождения ещё не наступил в этом году, отнимаем 1 год.
Такой подход корректен даже в високосные годы и охватывает все типичные сценарии.
Console.WriteLine(CalculateAge(new DateTime(2000, 5, 20))); // Пример: 25 лет, если сегодня 20.05.2025
Console.WriteLine(CalculateAge(new DateTime(2010, 10, 10))); // 14 лет, если сегодня до 10 октября 2025
Вывод
Функция CalculateAge
— лаконичное и надёжное решение для определения возраста на текущую дату в C#. Такой код удобно использовать в бизнес-логике, API, базах данных и даже мобильных приложениях.