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...
<?php
// Declara a data! :P
$data = '29/08/2008';
// Separa em dia, mês e ano
list($dia, $mes, $ano) = explode('/', $data);
// Descobre que dia é hoje e retorna a unix timestamp
$hoje = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
// Descobre a unix timestamp da data de nascimento do fulano
$nascimento = mktime( 0, 0, 0, $mes, $dia, $ano);
// Depois apenas fazemos o cálculo já citado :)
$idade = floor((((($hoje - $nascimento) / 60) / 60) / 24) / 365.25);
print $idade;
?>
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!