2011-08-13 268 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(); 
} 

注:此計算需要閏年考慮在內,所以你會得到實際年齡,而不是近似值。