Конвертирование TimeSpan в год, месяц, дату (расчет возраста) в .NET

Calendar

Как правило, необходимо отобразить разницу Datetime в виде количества лет, месяцев или дней. Элементарным примером этого является расчет возраста.  В .NET разница дат выражена в TimeSpan.

Если вам необходимо просто посчитать количество лет между двумя датами, то можно сделать так:

//txt1 = TextBox for Birthdate Input.
        DateTime dt1 = Convert.ToDateTime(txt1.Text);
        DateTime dt2 = DateTime.Now;
        if (dt1.DayOfYear <= dt2.DayOfYear)
        {
            lbl.Text = (dt2.Year-dt1.Year).ToString();
        }
        else
        {
            lbl.Text = (dt2.Year-dt1.Year - 1).ToString();
        }

Но если ва также необходимо получить месяц и дату:

protected void btn_Click(object sender, EventArgs e)
    {
        int years=-1,months=-1,days=-1;
        DateTime birthDate = Convert.ToDateTime(txt1.Text);
        TimeSpanToDate (DateTime.Now, birthDate,out years,out months,out days);
        Response.Write("Years: "+ years.ToString()+ " Months: "+ months.ToString()+" Days: "+ days.ToString());
    }
public void TimeSpanToDate(DateTime d1, DateTime d2,out int years, out int months, out int days)
{
// compute & return the difference of two dates,
// returning years, months & days
// d1 should be the larger (newest) of the two dates
// we want d1 to be the larger (newest) date
// flip if we need to
if (d1 < d2)
{
DateTime d3= d2;
d2= d1;
d1= d3;
}

// compute difference in total months
months= 12 * (d1.Year - d2.Year) + (d1.Month - d2.Month);

// based upon the 'days',
// adjust months & compute actual days difference
if (d1.Day < d2.Day)
{
months--;
days = DateTime.DaysInMonth(d2.Year, d2.Month) - d2.Day + d1.Day;
}
else
{
days= d1.Day - d2.Day;
}
// compute years & actual months
years= months / 12;
months-= years * 12;
}

Наслаждайтесь.

Источник: http://techbrij.com/210/convert-timespan-to-year-month-date-age-calculation-in-net

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>