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#有所帮助。