Member 13302374 Ответов: 3

C# - преобразование "дней от роду" в дату рождения?


Привет,

Мне нужно преобразовать, сколько "дней" кому-то (например, 3 года = 1095 дней), в ответ "дата рождения", то есть ДД/ММ/гггг. Я пробовал много разных способов, как это сделать, но безрезультатно (пока) - например, используя математическую формулу, но это становится немного сложным, особенно если учесть, как реализовать это в C# (по крайней мере, для новичка).

То, что находится в коробке ниже, является одним из многих способов, которые я пробовал до сих пор. Я знаю, что это неправильно, но это одна из многих моих попыток. Что такое простейший как это сделать (предполагая, что 1 год равен 365 дням, если компьютер не имеет собственного автоматизированного расчета для включения високосных лет)?

Наконец, если я включу високосные годы, будет ли корректировка просто учитывать, что 1 год = 365,25 года? Или в этом будет больше сложностей?

С уважением.

Что я уже пробовал:

public static string GetBirthDate(int daysOld)
{
    var dateToday = Convert.ToInt32(DateTime.Now);

    var calc = (dateToday - 365.25 * daysOld);

    return Convert.ToString(calc);
}

3 Ответов

Рейтинг:
17

F-ES Sitecore

int daysOld = 1095;
DateTime dob = DateTime.Now.AddDays(daysOld * -1);


Рейтинг:
1

Pete O'Hanlon

Если бы я делал что-то подобное, я бы сделал это так:

public static DateTime(int days)
{
  return new DateTime.Now.Subtract(TimeSpan.FromDays(days));
}


Richard Deeming

Вам понадобится имя функции там! :)

Pete O'Hanlon

Он там, но только если вы умеете читать субатомные :)

Рейтинг:
1

Peter Vegter

public static string GetBirthDate(int daysOld)
{
    // DateTime.Now.AddDays(-daysOld).To... has many format options
    // beware AddDays: daysOld conversion to type double

    return DateTime.Now.AddDays(-daysOld).ToString("dd'/'MM'/'yyyy")
}