Подтвердить что ты не робот

Рассчитать разницу между двумя датами и получить значение в годах?

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

Я хочу рассчитать в основном возраст сотрудников. Итак, у нас есть DOB для каждого сотрудника. Итак, сторона С# Я хочу сделать что-то вроде этого -

int age=Convert.Int32(DateTime.Now-DOB);

Я могу использовать дни и манипулировать, а затем получить возраст... но я хотел знать, есть ли что-то, что я могу использовать напрямую, чтобы получить количество лет.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Изменить: Упс, TotalDays - двойное, Days - это int.

Ответ 3

На этот сайт, который у них есть:

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

Ответ 4

    private static Int32 CalculateAge(DateTime DOB)
    {
        DateTime temp = DOB;
        Int32 age = 0;
        while ((temp = temp.AddYears(1)) < DateTime.Now)
            age++;
        return age;
    }

Ответ 5

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)

Христос я сосать по основной математике в эти дни...

Ответ 6

(DateTime.Now - DOB).TotalDays/365

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