Mar 31, 2011
Esta simples função permite-nos calcular a diferença em anos entre duas datas que pretendemos. Pode servir para muitas e variadas ocasiões.
O exemplo que vou mostrar calcula a idade de uma pessoa numa determinada data.
Aqui fica:
| PHP | | copiar código | | ? |
| 01 | echo "Idade: " . calcula_idade("1985-10-20","2011-03-31"); |
| 02 | |
| 03 | function calcula_idade($data_nascimento, $data_calcula) |
| 04 | { |
| 05 | // as datas devem ser no formato aaaa-mm-dd |
| 06 | |
| 07 | //conversão das datas para o formato de tempo linux |
| 08 | $data_nascimento = strtotime($data_nascimento." 00:00:00"); |
| 09 | $data_calcula = strtotime($data_calcula." 00:00:00"); |
| 10 | |
| 11 | //cálculo da idade fazendo a diferença entre as duas datas |
| 12 | $idade = floor(abs($data_calcula-$data_nascimento)/60/60/24/365); |
| 13 | |
| 14 | return($idade); |
| 15 | } |
Na linha nº1 temos o resultado do cálculo, que neste caso irá escrever no browser: “Idade: 25″.
Na linha nº12 é efectuado um acerto ao resultado do cálculo. Em certos casos a idade poderia ser 25.70, mas como se pretende a idade em número inteiro irá ser sempre usado só o valor 25, uma vez que a pessoa ainda não tem realmente 26 anos.
Esta função pode ser aplicada em diversas situações, seja para simplesmente mostrar a idade, ou algo mais complexo, validar a idade consoante determinados parâmetros, como por exemplo, limitar a inscrição num evento a uma idade mínima de participação (um caso comum é a limitação somente a participantes maiores de idade).
Recomendo vivamente o uso do Komodo Edit 6 como ferramenta de desenvolvimento PHP. Podem ver o meu artigo Debug de php com Komodo Edit 6 e descubram esta excelente ferramenta!
Em caso de questões, dúvidas ou sugestões, deixe um comentário no final da página.
Pessoal, fico triste em saber que uma coisa tao simples e que tem inumeras formas de se fazer nas demais linguagens seja algo tao complicado em PHP, que é o calculo de uma idade.
Segue um exemplo SUPER simples para fazer isso, espero que seja util:
{
$date1 = date_parse(date(“d/m/Y”)); // pega data atual, por exemplo 11/11/2011
$date2 = date_parse({DataNasc1}); // pega data do campo/variavel cujo conteudo foi digitado pelo usuario (ex. 30/08/1997)
$a = ((gmmktime(0, 0, 0, $date1['month'], $date1['day'], $date1['year']) – gmmktime(0, 0, 0, $date2['month'], $date2['day'], $date2['year']))/3600/24);
// $a = assume o valor 5186 que é a qtde de dias que a pessoa viveu
{Idade1} = (($a/365)); // Divide os dias vividos por 365 -> cada ano vivido, retorna o valor 14.208219178114 (idade com fração no calculo)
{Idade1} = intval(($a/365)); // Retorna apenas a parte inteira da idade, ou seja 14 anos
// nesse exemplo nao tratamos o resto da divisao, pois so interessa aqui a idade real e nao os dias que faltam para novo niver.
// Pois, sendo o calculo 14.208219178114 nao importa, pois a idade da pessoa continua sendo apenas 14 anos.
}
Olá!
Sinceramente não sei onde está a complexidade.
O exemplo que mostrei resume-se a 3 linhas de código.
Mas de qualquer forma é sempre bom saber outras alternativas
Uma palavra: concordo.
Simples e objetivo, valeu!