2012-02-08 1 views
-2

나는 사람의 현재 나이를 계산하고 싶다. 생년월일 (DOB) 데이터는 TextBox을 사용하여 입력하고 데이터베이스는 DOB를 varchar로 저장합니다.문자열 입력이 주어지면 C#에서 나이를 어떻게 계산합니까?

이 생년월일의 현재 나이를 어떻게 알 수 있습니까?

+1

왜 당신은 자신보다 힘든 일을하고 있습니까? DateTimePicker 대신 TextBox를 사용하면 작업이 더 어려워집니다. date 또는 datetime 대신 varchar로 날짜를 저장하면 작업이 더 어려워집니다.당신은 당신의 필요에 더 잘 맞는 디자인 결정을 내릴 필요가 있습니다. –

+0

atornblad에 동의하고 DateTimePicker를 사용할 수없는 경우에도 최대한 빨리 문자열을 구문 분석해야하므로 DB에 다양한 형식으로 끝나지 않습니다. –

+0

[C#으로 다른 사람의 나이를 어떻게 계산합니까?] (http://stackoverflow.com/questions/9/how-do-i-calculate-someones-age-in-c) – V4Vendetta

답변

0

날짜가 항상 같은 형식 인 경우 DateTime.TryParseExact()을 사용할 수 있습니다. 그러나 여기서는 그렇지 않습니다. http://www.codeproject.com/Articles/33298/C-Date-Time-Parser

이 모든 형식을 구문 분석 할 수 있지만 보장 할 수있는 방법은 없습니다 :

아마도이 라이브러리는 저자가 같은 문제가 없었다, 당신을 위해 도움이됩니다.

-2

당신은 DOB string into DateTime object을 변환 할 수 있습니다 후 나이 : 계산할 수

2

당신이해야 할 일이 많이 있습니다. 먼저 데이터베이스에 저장된 날짜를 파싱하는 방법이 필요합니다. 원래 사용자가 수동으로 입력했습니다. 사용자가 무엇이든 입력하는 경향이 있기 때문에 이는 어려운 작업입니다.

DateTime.Parse()으로 시작하여 얻을 수있는 모든 오류를 처리하십시오. 예, 오류가 발생합니다. 예를 들어, 무엇을 알 수 있습니까? "09/10/11"을 의미합니까? 이것은 미국 날짜인가 영국인가?

TextBox에서 MaskedTextBox으로 전환하여 사용자가 항상 같은 형식으로 날짜를 입력하고 날짜를 데이터베이스에 올바른 날짜로 올바르게 저장하도록 할 수 있습니다.

값이 적절하면 나는 간단한 빼기를 사용하여 나이를 구할 수 있지만, TimeSpan 값은 완전히 유용하지 않습니다. 전체 나이에 사람의 나이를 출력해야한다고 가정하기 때문에 .

// Assuming dateOfBirth is a DateTime value 
TimeSpan age = DateTime.Today - dateOfBirth; 

age 변수는 오늘 여기까지 출생 한 날로부터 경과 한 시간의 양을 보유하고 있습니다. 길이가 다른 점을 감안할 때 이는 최선의 선택이 아닙니다. 나는 다음과 같이 할 것이다 :

DateTime today = DateTime.Today; 
int years = today.Year - dateOfBirth.Year; 
if (dateOfBirth.Month > today.Month) { 
    --years; 
} 
else if (dateOfBirth.Month == today.Month && dateOfBirth.Day > today.Day) { 
    --years; 
} 
// TODO: Output the years variable. 
-2

DateTime dateDOB = DateTime.Parse (txt_dob.Text);

int now = int.Parse (DateTime.Today.ToString ("yyyyMMdd"));

int dob ​​= int.Parse (dateDOB.ToString ("yyyyMMdd")));

string dif = (now-dob) .ToString();

문자열 연령 = "0";

경우 (dif.Length> 4)

dif.Substring 나이 = (0, dif.Length - 4);

txt_age.Text = age.ToString();

관련 문제