Как вычислить возраст в С#?

305
25 мая 2017, 07:31

почему при вычитании двух дат типа DateTime получается значение типа TimeSpan, и как мне получить отсюда результат типа DateTime?

public int Age()
{
    return (DateTime.Now - BirthDate)
}
Answer 1

Разницу между датами нельзя перевести в года, т.к. в каждом календарном году свое количество дней. Т.е. разница в 365 дней может быть как полным годом, так и неполным, в зависимости от даты отсчета. Так что придется сравнивать года и даты вручную:

public static int GetAge(DateTime birthDate)
{
    var now = DateTime.Now;
    return now.Year - birthDate.Year - 1 + 
        ((now.Month > birthDate.Month || now.Month == birthDate.Month && now.Day >= birthDate.Day) ? 1 : 0);
}

Более красивое решение от Mike Polen:

DateTime now = DateTime.Today;
int age = now.Year - bday.Year;
if (bday > now.AddYears(-age)) age--;
READ ALSO
Проблема при обновлении данных в ADO.NET

Проблема при обновлении данных в ADO.NET

Пытаюсь выполнить SQL запрос, при выполнении метода Fill, почему-то выбивает ошибку:

286
Размещение C# на сервере

Размещение C# на сервере

Создаю бота для вк, который меняет название группы при помощи C# ASPNET MVC

282
XML сериализация List<IFigure>

XML сериализация List<IFigure>

Доброго времени сутокНеобходимо сериализовать список фигур, реализующих общий интерфейс IFigure

373
Реализация AES режима шифрования CBC на основе ECB в C#

Реализация AES режима шифрования CBC на основе ECB в C#

Здравствуйте! Нужно реализовать на основе ECB (собственно, без использования библиотеки Cryptography для CBC) шифрование в режиме CBC (для алгоритма...

484