Точный расчет возраста [дубликат]

Возможный дубликат:
Как рассчитать чей-то возраст в C #?

Может быть, это может быть глупо, но у меня нет проблем с моим возрастом, но иногда полезно подсчитать точный возраст кого-то, я ввел дату своего рождения в своем профиле (12.01.1975) "дд / мм / гггг "И он рассчитал 33, а мне на самом деле 32, разве не лучше рассчитать точный возраст?

Может быть

DateTime dt1 = DateTime.Now;
TimeSpan dt2;
dt2 = dt1.Subtract(new DateTime(1975, 12, 01));
double year = dt2.TotalDays / 365;

Результат года - 32.77405678074

Может ли этот код быть в порядке?

1 c#
20.08.2008 18:59:03
popopome 20.08.2008 19:02:11
4 ОТВЕТА
РЕШЕНИЕ

Если бы вы родились 12 января 1975 года, сегодня вам было бы 33 года.

Если бы вы родились 1 декабря 1975 года, сегодня вам было бы 32 года.

Если вы прочитаете заметку в поле дня рождения при редактировании своего профиля, то увидите «ГГГГ / ММ / ДД», я уверен, что она попытается интерпретировать даты других форматов, но похоже, что она интерпретирует ММ / ДД / ГГГГ (стандартные даты США) предпочтительнее ДД / ММ / ГГГГ (европейские стандартные даты). Простое решение - ввести дату вашего дня рождения в соответствии с предлагаемым стилем ввода.

0
20.08.2008 20:18:23

Может быть, это может быть глупо, но у меня нет проблем с моим возрастом, но иногда полезно подсчитать точный возраст кого-то, я ввел дату своего рождения в своем профиле (12.01.1975) "дд / мм / гггг "И он рассчитал 33, а мне на самом деле 32, разве не лучше рассчитать точный возраст?

Я предполагаю, что это проблема локализации, хотя я не знаю, как это произойдет, поскольку (по крайней мере для меня) в профиле вы указали свой возраст в формате «ГГГГ / ММ / ДД». Но у вас день рождения, который считается традиционным (12 января) в традиционных американских настройках, так что это та область, в которую я хотел бы обратить внимание. Я также родился в 1975 году, и у меня день рождения в следующем месяце, и у него правильный возраст.

1
20.08.2008 19:10:28

На самом деле, из-за високосных лет ваш код будет отключен. Поскольку объект timespan не имеет свойства TotalYears, лучший способ получить его - это

Простите VB.Net

Dim myAge AS Integer = DateTime.Now.year - BirthDate.year
If Birthdate.month < DateTime.Now.Month _
OrElse BirthDate.Month = DateTime.Now.Month AndAlso Birthdate.Day < DateTime.Now.Day Then
MyAge -= 1
END IF
0
20.08.2008 19:12:59
int ag1;
string st, ag;
void agecal()
{
    st = TextBox4.Text;
    DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
    dtfi.ShortDatePattern = "MM/dd/yyyy";
    dtfi.DateSeparator = "/";
    DateTime dt = Convert.ToDateTime(st, dtfi);
    ag1 = int.Parse(dt.Year.ToString());
    int years = DateTime.Now.Year - ag1;
    ag = years.ToString();
    TextBox3.Text = ag.ToString();
}
0
26.05.2012 11:12:50