Calcular IDADE com datetimepicker

.NET

28/03/2012

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

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

28/03/2012

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?
GOSTEI 0
Rafael Miranda

Rafael Miranda

28/03/2012

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#
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

28/03/2012

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

Tente aí.
GOSTEI 0
Rafael Miranda

Rafael Miranda

28/03/2012

Esta dando erro no ANOS
THE NAME ANOS DOES NOT EXIST IN THE CURRENT CONTEXT
GOSTEI 0
Rafael Miranda

Rafael Miranda

28/03/2012

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;
}
GOSTEI 0
Rafael Miranda

Rafael Miranda

28/03/2012

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();
}
GOSTEI 0
Rafael Miranda

Rafael Miranda

28/03/2012

Apareceu a idade mais tem que dar tab para aparecer a idade e esta com 1 ano a mais.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

28/03/2012

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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

28/03/2012

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();
GOSTEI 0
Rafael Miranda

Rafael Miranda

28/03/2012

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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

28/03/2012

Disponha, fico feliz por ter ajudado.
Sempre que precisar, estamos aqui.
GOSTEI 0
POSTAR