2011-08-13 67 views
0

可能性の重複:私は出産のクライアントの日付が入力されたフォームを作成しようとしていますし、彼の年齢はtxtAgeに自動的に表示され
How do I calculate someone's age in C#?年齢計算

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 true、その部分を追加しました。それにもかかわらず、この質問は重複のために閉鎖されるべきです –

1

を見て、それが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(); 
} 

注:この計算は、アカウントに閏年を取り、あなたが実際に取得するよう

年齢を計算するための簡単な方法は、あなたが今日の日付を渡すまで、年によって誕生日を増やすことです年齢、近似ではありません。

関連する問題