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