BuscaPé, líder em comparação de preços na América Latina

PHPit

Pular navegação

Descobrindo a idade através da data de nascimento

Enviado em 16/10/2008 às 15:13

Prefácio


De volta à ativa, próximo ao primeiro aniversário do PHPit, continuo com aquela proposta de artigos com pequenas dicas.
Hoje falaremos sobre um assunto que já foi levantado em diversos fóruns web adentro.

Conceito


Algumas vezes você pode necessitar descobrir a idade exata do seu usuário. As vezes ele acaba sendo barrado, apesar de ter a idade correta, mas pelo fato de ele ter completado a idade necessária no ano corrente, acabamos por restringir um usuário que deveria ter acesso.

A idéia básica nesse script é encontrar a timestamp de hoje, a timestamp do nascimento do fulano, subtrair um do outro, dividir pelos 60 segundos, pelos 60 minutos, pelas 24 horas e pelos 365.25 dias do ano. (Ufa!)

Mas aí você me pergunta: "Peraí! 365.25 dias do ano?!".

Lembra-se dos anos bissextos? (Rápida aula de história :P)
Em 238 a.C., lá no Egito, durante a monarquia de Ptolomeu III, foi decretada a adição de 1 dia a cada 4 anos, pra compensar a diferença que existia entre o ano do calendário e o ano solar. Depois aconteceram diversos fatos, que não vêem ao caso agora, e finalmente foi dada origem ao que provavelmente é a maior gambiarra da história: o ano bissexto. Por isso cada ano teria aproximadamente 365.25 (por causa do 1/4 de dia que fica sobrando)...

Bom... Está respondida a pergunta, então..

Mão na massa



Vamos supor que temos apenas a data, no formato brasileiro...

  1. <?php
  2.  
  3. // Declara a data! :P
  4. $data = '29/08/2008';
  5.  
  6. // Separa em dia, mês e ano
  7. list($dia, $mes, $ano) = explode('/', $data);
  8.  
  9. // Descobre que dia é hoje e retorna a unix timestamp
  10. $hoje = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
  11. // Descobre a unix timestamp da data de nascimento do fulano
  12. $nascimento = mktime( 0, 0, 0, $mes, $dia, $ano);
  13.  
  14. // Depois apenas fazemos o cálculo já citado :)
  15. $idade = floor((((($hoje - $nascimento) / 60) / 60) / 24) / 365.25);
  16.  
  17. print $idade;
  18.  
  19. ?>


Conclusão


Há outros métodos de se fazer isso, mas esse é um dos mais simples, pois utiliza apenas cálculos e não vários IFs.

Espero que tenham gostado! :)

E preparem-se para novidades no primeiro aniversário do PHPit!

Abraços!

 

Comente (00)




Artigos Recentes

Rafael Jaques - PHPit 2007
Site sob Creative Commons - Alguns direitos reservados

Assine o RSS do PHPit! :)
Saiba onde tem o melhor preço antes de comprar