Вычислите различие между двумя датами и получите значение в течение многих лет? [дубликат]

44
задан Community 23 May 2017 в 11:47
поделиться

6 ответов

Вы хотите рассчитать возраст в годах для сотрудника? Затем вы можете использовать этот фрагмент (из Вычислить возраст в C # ):

DateTime now = DateTime.Today;
int age = now.Year - bday.Year;
if (bday > now.AddYears(-age)) age--;

Если нет, то укажите. Мне трудно понять, чего вы хотите.

81
ответ дан 26 November 2019 в 21:53
поделиться

Math.Round (DateTime.Now.Subtract (DOB) .TotalDays / 365.0)

Как уже указывалось, это не сработает. Вам нужно будет сделать следующее:

(Int32)Math.Round((span.TotalDays - (span.TotalDays % 365.0)) / 365.0);

и на этом этапе другое решение будет менее сложным и будет оставаться точным на больших промежутках.

Редактировать 2, как насчет:

Math.Floor(DateTime.Now.Subtract(DOB).TotalDays/365.0)

Господи, я плохо разбираюсь в основах математики в наши дни ...

0
ответ дан 26 November 2019 в 21:53
поделиться

На этом сайте есть:

   public static int CalculateAge(DateTime BirthDate)
   {
        int YearsPassed = DateTime.Now.Year - BirthDate.Year;
        // Are we before the birth date this year? If so subtract one year from the mix
        if (DateTime.Now.Month < BirthDate.Month || (DateTime.Now.Month == BirthDate.Month && DateTime.Now.Day < BirthDate.Day))
        {
            YearsPassed--;
        }
        return YearsPassed;
  }
7
ответ дан 26 November 2019 в 21:53
поделиться

Вычитание двух DateTime дает вам TimeSpan назад. К сожалению, самая большая единица, которую он вам возвращает, - это дни.

Хотя это и неточно, вы можете оценить это, например:

int days = (DateTime.Today - DOB).Days;

//assume 365.25 days per year
decimal years = days / 365.25m;

Редактировать: Упс, TotalDays - это двойное, Days - это int.

17
ответ дан 26 November 2019 в 21:53
поделиться
    private static Int32 CalculateAge(DateTime DOB)
    {
        DateTime temp = DOB;
        Int32 age = 0;
        while ((temp = temp.AddYears(1)) < DateTime.Now)
            age++;
        return age;
    }
4
ответ дан 26 November 2019 в 21:53
поделиться
(DateTime.Now - DOB).TotalDays/365

Вычитание структуры DateTime из другой структуры DateTime даст вам структуру TimeSpan со свойством TotalDays ... затем просто разделите на 365

-4
ответ дан 26 November 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: