Array
(
)

Calcular IDADE com datetimepicker

Trevisan
   - 28 mar 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.

Joel Rodrigues
   - 28 mar 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?

Trevisan
   - 28 mar 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#

Joel Rodrigues
   - 28 mar 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í.

Trevisan
   - 28 mar 2012

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

Trevisan
   - 28 mar 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;
}

Trevisan
   - 28 mar 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();
}

Trevisan
   - 28 mar 2012

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

Joel Rodrigues
   - 28 mar 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.

Joel Rodrigues
   - 28 mar 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();

Trevisan
   - 28 mar 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.

Joel Rodrigues
   - 28 mar 2012

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