Array
(
)

Calculo de Idade

Danoca
   - 20 out 2008

Olá Pessoal se alguem puder me ajudar já agradeço, estou com o seguinte problema, preciso a partir da data de nascimento gerar a idade da pessoa e verificar se ela tem menos de 2 anos caso tenha eu devo mostrar a idade atual com os meses. Implementei dessas formas, mas se a pessoa faz aniversario em 21/10/85 e estamos e em 20/10/08 ele já mostra com 23anos, sendo que a pessoa ainda tem 22.

DateTime dataatual = DateTime.Now;
DateTime datanascimento;
datanascimento = DateTime.Parse(DataNascimentoTextBox.Text);

int anos;

if (datanascimento.Month >= dataatual.Month && datanascimento.Day >= dataatual.Day)
{
anos = dataatual.Year - datanascimento.Year;
}
else{
anos = dataatual.Year - datanascimento.Year;
anos = anos - 1;
}
IdadeatualLabel.Text = anos.ToString() + ´ ano(os)´;

if (anos < 3)
{
int meses = dataatual.Month - datanascimento.Month;
IdadeMesLabel.Text = meses.ToString() + ´ mes(es)´;
IdadeMesLabel.Visible = true;
}
else
{

IdadeMesLabel.Visible = false;
}
}

2 tentativa

TimeSpan date;
date= DateTime.Now.Subtract (DateTime.Parse(DataNascimentoTextBox.Text));
double anos = date.TotalDays / 365;

IdadeatualLabel.Text = anos.ToString();

if (anos < 2)
{
int meses = DateTime.Now.Month - DateTime.Parse(DataNascimentoTextBox.Text).Month;
IdadeMesLabel.Text = meses.ToString() + ´ mes(es)´;
IdadeMesLabel.Visible = true;
}
else {

IdadeMesLabel.Visible = false;
}
}

Obrigada

Codename.v
   - 22 out 2008

:) O primeiro modo como você estava fazendo estava corredo. Você só precisava persistir um pouco mais no IF rs... Segue abaixo o código.

#Código

DateTime dataNascimento;

int idade;


DataNascimento = DateTime.Parse(txtDataNascimento.Text);

idade = DateTime.Now.Year - dataNascimento.Year;

if ((dataNascimento.Month > DateTime.Now.Month) ||
     ((dataNascimento.Month == DateTime.Now.Month) &&
      (dataNascimento.Day < DateTime.Now.Day)))
                    --idade;
                    
txtIdade.Text = idade.ToString() + " ano(s)";


Comentando: Primeiro ele armazena o conteudo do controle TextBox onde o usuário digitou a data e armazena na variável de tipo DateTime chamada dataNascimento. Em seguida ele subtrai o ano de nascimento que o usuário digitou do ano atual. E finalizando, faz a seguinte verificação... Se o mês digitado for maior que o mês atual OU se o mês digitado for igual ao mês atual e o dia digitado for menor que o dia atual, idade = idade -1.

Abraços!