Codificando .Net

Aprendizado, companherismo, ensino e aperfeiçoamento constante

Boa tarde galera,
Estou tentando calcular a idade para apresentar um campo TextBox, porém, sempre apresenta um ano a mais.
Alguém pode me ajudar?
 
Estou fazendo o calculo de idade dessa forma:


private void DtpNascimento_ValueChanged(object sender, EventArgs e)
{
    try  {
           TimeSpan ts = DateTime.Now.Subtract(DtpNascimento.Value);
           txtIdade.Text = (new DateTime(ts.Ticks).ToString("yy"));

         }

    catch (Exception erro)

         {
MessageBox.Show("Selecione uma data válida\n" + erro.Message.ToString() , "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

         }

}

Exibições: 58

Respostas a este tópico

é mais fácil fazer assim (http://stackoverflow.com/questions/9/how-do-i-calculate-someones-ag...):

 

DateTime now = DateTime.Today;
int age = now.Year - bday.Year;
if (bday > now.AddYears(-age)) age--;

 

evita os problemas com arredondamentos

Obrigado pela dica Fernando, o problema é que eu sou iniciante e não sei como usar.



Fernando Lage Bastos disse:

é mais fácil fazer assim (http://stackoverflow.com/questions/9/how-do-i-calculate-someones-ag...):

 

DateTime now = DateTime.Today;
int age = now.Year - bday.Year;
if (bday > now.AddYears(-age)) age--;

 

evita os problemas com arredondamentos

No caso so seu código, ficaria assim:

DateTime
agora= DateTime.Today;
int
idade = agora.Year - dtpNascimento.Value.Year;
if
(
dtpNascimento > agora.AddYears(-idade)) idade--;
txtIdade.Text = idade.ToString()
;

Obrigado pela força Fernando.



Fernando Lage Bastos disse:

No caso so seu código, ficaria assim:

DateTime
agora= DateTime.Today;
int
idade = agora.Year - dtpNascimento.Value.Year;
if
(
dtpNascimento > agora.AddYears(-idade)) idade--;
txtIdade.Text = idade.ToString()
;

RSS

Patrocínios

 

 

Comunidade Daruma 

Editora O'Reilly 

 

© 2013   Criado por Alexandre Tarifa.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço