Сведения о вопросе

Математик

20:55, 15th August, 2020

Теги

c#    

Точный расчет возраста

Просмотров: 370   Ответов: 4

Возможный Дубликат:
Как рассчитать возраст someone's в C#?

Может быть, это может быть глупо, но и у меня нет проблем с моим возрастом, но иногда хорошо вычислить точный возраст кого-то, я ввел свою дату рождения в свой профиль (01/12/1975) "dd/mm/yyyy", и он рассчитал 33, а мне все еще 32, не лучше ли вычислить точный возраст?

Может быть

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

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

Может ли этот код быть OK?



  Сведения об ответе

fo_I_K

02:39, 9th August, 2020

Может быть, это может быть глупо, но и у меня нет проблем с моим возрастом, но иногда хорошо вычислить точный возраст кого-то, я ввел свою дату рождения в свой профиль (01/12/1975) "dd/mm/yyyy", и он рассчитал 33, а мне все еще 32, не лучше ли вычислить точный возраст?

Я предполагаю, что это проблема локализации, хотя я не знаю, как это произойдет, так как (по крайней мере для меня) в профиле вы заполняете свой возраст в формате "YYYY/MM/DD". Но ваш день рождения-это тот, который читается как действительная дата (12 января) в традиционном U.S. настройки, так что это та область, в которую я бы заглянул. Я тоже родился в 1975 году, и мой день рождения будет в следующем месяце, и он точно соответствует моему возрасту.


  Сведения об ответе

VERSUION

10:19, 11th August, 2020

На самом деле, из-за високосных лет ваш код будет отключен. Поскольку объект 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


  Сведения об ответе

dumai

12:04, 10th August, 2020

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

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

Если Вы читаете заметку в поле "День рождения" при редактировании своего профиля, вы увидите, что она говорит "YYYY/MM/DD", я уверен, что он попытается интерпретировать даты других форматов, но похоже, что он интерпретирует MM/DD/YYYY (стандартные даты US) вместо DD/MM/YYYY (европейские стандартные даты). Самое простое решение-ввести дату своего дня рождения в соответствии с предложенным стилем ввода.


  Сведения об ответе

ASSembler

08:30, 4th August, 2020

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();
}


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться