2011-08-13 269 views
0

可能重复:
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'在当前上下文中不存在。

回答

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

这样做的扩展方法将是一个很好的方式来做到这一点:) – stack72

+1

这不占闰年,所以它会显示错误的年龄,当生日接近今天的日期。 – Guffa

+0

@Guffa是真的,补充说明一部分。尽管如此,这个问题应该由于重复而被关闭 –

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(); 
} 

注:此计算需要闰年考虑在内,所以你会得到实际年龄,而不是近似值。