年龄计算

时间:2011-08-13 22:13:47

标签: c# .net datetime

  

可能重复:
  How do I calculate someone's age in C#?

我正在尝试创建一个表单,其中输入了客户的出生日期,并且他的年龄会自动显示在txtAge中:

 private void Form3_Load(object sender, EventArgs e)
 {
     dtpDob.Value = DateTime.Today.Date;
     SqlConnection conn = new SqlConnection();
 }  

 private void dtpDOB_Leave(object sender, System.EventArgs e)
 {
     System.DateTime dob = default(System.DateTime);
     dob = dtpDob.Value.Date;
     txtAge.Text = DateTime.DateDiff(DateInterval.Year, dob, DateTime.Today.Date);
 }

但是我得到了这些错误:

  

'System.DateTime'不包含'DateDiff'的定义   “DateInterval”这个名称在当前上下文中不存在。

3 个答案:

答案 0 :(得分:6)

public static int GetAge(DateTime birthDate)
        {
            return (int)Math.Floor((DateTime.Now - birthDate).TotalDays / 365.242199);
        }

答案 1 :(得分:1)

您需要导入VB库才能使用DateDiff,而且它不是DateTime结构的一部分。

尽管使用DateDiff并未正确计算年龄,但它只会为您提供日期年份之间的差异,而不是年份中日期之间的差异。

计算年龄的一种简单方法是将出生日期延长一年,直至您通过今天的日期:

private void dtpDOB_Leave(object sender, System.EventArgs e) {
  System.DateTime dob = default(System.DateTime);
  dob = dtpDob.Value.Date;

  int age = -1;
  DateTime today = DateTime.Today;
  while (dob <= today) {
    age++;
    dob = dob.AddYears(1);
  }
  txtAge.Text = age.ToString();
}

注意:此计算需要考虑闰年,因此您将获得实际年龄,而不是近似值。

答案 2 :(得分:0)

尝试以天为单位的年龄:

txtAgeInDays.Text = (DateTime.Now - dob).ToString ("dddddd");

请参阅http://msdn.microsoft.com/en-us/library/system.timespan.tostring.aspx