Calcular IDADE com datetimepicker

28/03/2012

0

Boa tarde, estou fazendo em uma tela de cadastro com um campo com datetimepicker .
Gostaria que calculasse a data que colocar no datetimepicker e apresentasse em uma label a idade da pessoa em tempo real.

Para que na tela de busca(select) eu consiga adicionar um campo para buscar a idade e não o ano de nascimento.
Rafael Miranda

Rafael Miranda

Responder

Posts

28/03/2012

Joel Rodrigues

Você precisa da idade exata? ANOS-MESES-DIAS?
Para pegar a quantidade de anos, basta o seguinte:
if(DateTime.Today.Month > datePicker.Value.Month && DateTime.Today.Day > datePicker.Value.Day)
anos = DateTime.Today.Year - datePicker.Value.Year;
else
anos = DateTime.Today.Year - datePicker.Value.Year - 1;

Se passou do aniversário, pega a diferença de anos, senão, subtrai um ano (ainda não completou).

Seria isso?
Responder

28/03/2012

Rafael Miranda

Obrigado pela ajuda.

Mas ainda não consegui, tipo na tela de cadastro de aluno tem o campo de datetimepicker
e ao lado coloquei um label que seria a idade, conforme eu mude a data que esta no datetimepicker o label modifica tbm.

Tentei faze de tudo e nada...
Estou fazendo em C#
Responder

28/03/2012

Joel Rodrigues

Ponha o cálculo e exibição no evento onLeave do DateTimePicker.
Após calcular, você exibe com label.Text = anos.ToString();

Tente aí.
Responder

28/03/2012

Rafael Miranda

Esta dando erro no ANOS
THE NAME ANOS DOES NOT EXIST IN THE CURRENT CONTEXT
Responder

28/03/2012

Rafael Miranda

estou fazendo assim


private void label17_Click(object sender, EventArgs e)
{
label17.Text = anos.ToString();

}

private void dtpNascimentoxxx_Leave(object sender, EventArgs e)
{
if (DateTime.Today.Month > dtpNascimentoxxx.Value.Month && DateTime.Today.Day > dtpNascimentoxxx.Value.Day)
anos = DateTime.Today.Year - dtpNascimentoxxx.Value.Year;
else
anos = DateTime.Today.Year - dtpNascimentoxxx.Value.Year - 1;
}
Responder

28/03/2012

Rafael Miranda

Está assim mais não faz nada no labelIdade

private void dtpNascimentoxxx_Leave(object sender, EventArgs e)
{
if (DateTime.Today.Month > dtpNascimentoxxx.Value.Month && DateTime.Today.Day > dtpNascimentoxxx.Value.Day)
anos = DateTime.Today.Year - dtpNascimentoxxx.Value.Year;
else
anos = DateTime.Today.Year - dtpNascimentoxxx.Value.Year - 1;
lblIdade.Text = anos.ToString();
}
Responder

28/03/2012

Rafael Miranda

Apareceu a idade mais tem que dar tab para aparecer a idade e esta com 1 ano a mais.
Responder

28/03/2012

Joel Rodrigues

Cara, o evento onLeave ocorre quando você SAI do controle. Ponha esse código no evento onChange ou semelhante. Dica: deixe no Leave, é mais seguro.
Quanto ao ano, subtraia 1.
Responder

28/03/2012

Joel Rodrigues

Teste o seguinte:

if (DateTime.Today.Month >= dtpNascimentoxxx.Value.Month && DateTime.Today.Day >= dtpNascimentoxxx.Value.Day)
anos = DateTime.Today.Year - dtpNascimentoxxx.Value.Year;
else
anos = DateTime.Today.Year - dtpNascimentoxxx.Value.Year - 1;
lblIdade.Text = anos.ToString();
Responder

28/03/2012

Rafael Miranda

Muito obrigado.
Deus certo aqui, irei arrumar a tabela para poder gravar no banco e arrumar o select e where no form de busca...

Abração.
Responder

28/03/2012

Joel Rodrigues

Disponha, fico feliz por ter ajudado.
Sempre que precisar, estamos aqui.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar