C#实现计算年龄的简单方法汇总
vs2010测试通过,主要思想是由出生日期和当前日期,两个日期计算出年龄(岁、月、天)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespacePublicClass
{
publicstaticclassCalculationDate
{
///<summary>
///由两个日期计算出年龄(岁、月、天)
///</summary>
publicstaticvoidcalculationDate(DateTimebeginDateTime,DateTimeendDateTime)
{
if(beginDateTime>endDateTime)
thrownewException("开始时间应小于或等与结束时间!");
/*计算出生日期到当前日期总月数*/
intMonths=endDateTime.Month-beginDateTime.Month+12*(endDateTime.Year-beginDateTime.Year);
/*出生日期加总月数后,如果大于当前日期则减一个月*/
inttotalMonth=(beginDateTime.AddMonths(Months)>endDateTime)?Months-1:Months;
/*计算整年*/
intfullYear=totalMonth/12;
/*计算整月*/
intfullMonth=totalMonth%12;
/*计算天数*/
DateTimechangeDate=beginDateTime.AddMonths(totalMonth);
doubledays=(endDateTime-changeDate).TotalDays;
}
}
}
再简单一些:
publicintCalculateAgeCorrect(DateTimebirthDate,DateTimenow)
{
intage=now.Year-birthDate.Year;
if(now.Month<birthDate.Month||(now.Month==birthDate.Month&&now.Day<birthDate.Day))age--;
returnage;
}
下面我们来看看常规方法:
方法1:
stringm_Str="1984-04-04"; intm_Y1=DateTime.Parse(m_Str).Year; intm_Y2=DateTime.Now.Year; intm_Age=m_Y2-m_Y1; Response.Write(m_Age);
方法2:
如果你将日期格式化为yyyymmdd,并且从当前日子减去生日,最后去除4个数字,就得到年龄了:)
我相信这样的方法可以用任何语言实现:
20080814-19800703=280111
去除最后4位=28.
intnow=int.Parse(DateTime.Today.ToString("yyyyMMdd"));
intdob=int.Parse(dateDOB.ToString("yyyyMMdd"));
stringdif=(now-dob).ToString();
stringage="0";
if(dif.Length>4)
age=dif.Substring(0,dif.Length-4);
方法3:
DateTimenow=DateTime.Today; intage=now.Year-bday.Year; if(bday>now.AddYears(-age))age--;
以上所述就是本文的全部内容了,希望能对大家学习C#有所帮助。