How to calculate an age based on a birthday?
 Possible Duplicate:  
 How do I calculate someone's age in C#?  
I want to write an ASP.NET helper method which returns the age of a person given his or her birthday.
I've tried code like this:
public static string Age(this HtmlHelper helper, DateTime birthday)
{
    return (DateTime.Now - birthday); //??
}
But it's not working. What is the correct way to calculate the person's age based on their birthday?
Stackoverflow uses such function to determine the age of a user.
Calculate age in C#
The given answer is
DateTime now = DateTime.Today;
int age = now.Year - bday.Year;
if (now < bday.AddYears(age)) age--;
So your helper method would look like
public static string Age(this HtmlHelper helper, DateTime birthday)
{
    DateTime now = DateTime.Today;
    int age = now.Year - birthday.Year;
    if (now < birthday.AddYears(age)) age--;
    return age.ToString();
}
Today, I use a different version of this function to include a date of reference. This allow me to get the age of someone at a future date or in the past. This is used for our reservation system, where the age in the future is needed.
public static int GetAge(DateTime reference, DateTime birthday)
{
    int age = reference.Year - birthday.Year;
    if (reference < birthday.AddYears(age)) age--;
    return age;
}
来自古老线索的另一个聪明的方式:
int age = (
    Int32.Parse(DateTime.Today.ToString("yyyyMMdd")) - 
    Int32.Parse(birthday.ToString("yyyyMMdd"))) / 10000;
I do it like this:
(Shortened the code a bit)
public struct Age
{
    public readonly int Years;
    public readonly int Months;
    public readonly int Days;
}
public Age( int y, int m, int d ) : this()
{
    Years = y;
    Months = m;
    Days = d;
}
public static Age CalculateAge ( DateTime birthDate, DateTime anotherDate )
{
    if( startDate.Date > endDate.Date )
        {
            throw new ArgumentException ("startDate cannot be higher then endDate", "startDate");
        }
        int years = endDate.Year - startDate.Year;
        int months = 0;
        int days = 0;
        // Check if the last year, was a full year.
        if( endDate < startDate.AddYears (years) && years != 0 )
        {
            years--;
        }
        // Calculate the number of months.
        startDate = startDate.AddYears (years);
        if( startDate.Year == endDate.Year )
        {
            months = endDate.Month - startDate.Month;
        }
        else
        {
            months = ( 12 - startDate.Month ) + endDate.Month;
        }
        // Check if last month was a complete month.
        if( endDate < startDate.AddMonths (months) && months != 0 )
        {
            months--;
        }
        // Calculate the number of days.
        startDate = startDate.AddMonths (months);
        days = ( endDate - startDate ).Days;
        return new Age (years, months, days);
}
// Implement Equals, GetHashCode, etc... as well
// Overload equality and other operators, etc...
}
链接地址: http://www.djcxy.com/p/54348.html上一篇: 如何计算来自dob的年龄在c#中
下一篇: 如何根据生日来计算年龄?
