Como calcular a idade em PHP
Calcular a idade de uma pessoa a partir da sua data de nascimento é uma tarefa comum em várias aplicações, como formulários de cadastro ou sistemas que exigem restrição de idade. Neste post, vou te mostrar como calcular a idade em PHP de forma precisa, usando funções nativas para lidar com datas.
Usando DateTime para calcular a idade
Uma das maneiras mais eficientes de calcular a idade em PHP é usando a classe DateTime
. Ela oferece uma maneira fácil de trabalhar com datas, garantindo a precisão na conversão de intervalos de tempo.
Exemplo de cálculo de idade
Vejaum exemplo básico de como calcular a idade a partir da data de nascimento utilizando a classe DateTime
:
<?php
function calcularIdade($dataNascimento) {
// Cria um objeto DateTime a partir da data de nascimento
$dataNascimentoObj = new DateTime($dataNascimento);
// Cria um objeto DateTime com a data atual
$dataAtual = new DateTime();
// Calcula a diferença entre a data atual e a data de nascimento
$idade = $dataAtual->diff($dataNascimentoObj);
// Retorna a idade em anos
return $idade->y;
}
// Exemplo de uso
$dataNascimento = "1990-10-22";
$idade = calcularIdade($dataNascimento);
echo "A idade da pessoa é: $idade anos.";
?>
Explicação do código:
new DateTime($dataNascimento)
: Cria um objetoDateTime
a partir da data de nascimento fornecida (no formatoY-m-d
, ou seja, ano-mês-dia).new DateTime()
: Cria um objetoDateTime
representando a data atual.$dataAtual->diff($dataNascimentoObj)
: A funçãodiff()
calcula a diferença entre a data atual e a data de nascimento. Essa diferença é retornada como um objetoDateInterval
, que contém a diferença em anos, meses, dias, etc.$idade->y
: A propriedadey
do objetoDateInterval
representa a diferença em anos, que é a idade da pessoa.- Exibição: O código retorna e exibe a idade calculada.
Exemplo de saída:
Se a data de nascimento for 1990-10-22
e a data atual for 2024-10-22
, a saída será:
A idade da pessoa é: 34 anos.
Verificando a idade com precisão (levando em conta aniversário)
O cálculo da idade com DateTime
já leva em conta se o aniversário da pessoa já ocorreu no ano atual. Por exemplo, se hoje fosse 2024-10-21
e a pessoa nasceu em 1990-10-22
, o cálculo corretamente diria que a pessoa ainda tem 33 anos (e não 34).
Cálculo de idade com funções antigas (usando strtotime
)
Caso prefira usar funções mais antigas e diretas do PHP, como strtotime()
e date()
, também é possível calcular a idade. Aqui está uma alternativa com essas funções:
<?php
function calcularIdade($dataNascimento) {
// Converte a data de nascimento em timestamp
$dataNascimentoTimestamp = strtotime($dataNascimento);
// Calcula a idade com base no ano atual e o ano de nascimento
$idade = date('Y') - date('Y', $dataNascimentoTimestamp);
// Verifica se a pessoa já fez aniversário este ano
if (date('md') < date('md', $dataNascimentoTimestamp)) {
$idade--;
}
return $idade;
}
// Exemplo de uso
$dataNascimento = "1990-10-22";
$idade = calcularIdade($dataNascimento);
echo "A idade da pessoa é: $idade anos.";
?>
Explicação do código:
strtotime($dataNascimento)
: Converte a string da data de nascimento em um timestamp Unix (o número de segundos desde 01-01-1970).date('Y') - date('Y', $dataNascimentoTimestamp)
: Calcula a idade subtraindo o ano atual do ano de nascimento.- Verifica o aniversário: Usando
date('md')
, verificamos se o mês e o dia atuais já passaram do mês e dia do aniversário. Se não, subtraímos um ano para obter a idade correta.
Exemplo de saída:
A idade da pessoa é: 34 anos.
Qual abordagem usar?
DateTime
: É mais moderno, flexível e robusto. Use-o se você estiver trabalhando com PHP 5.3 ou superior (a maioria dos servidores atuais suporta essas versões).- Funções mais antigas (
strtotime
,date
): Funcionam em qualquer versão do PHP, mas são menos flexíveis e podem ser mais propensas a erros com intervalos de tempo complexos.
Exemplo completo: Cálculo dinâmico de idade com formulário
Veja um exemplo mais completo que inclui um formulário HTML para o usuário inserir a data de nascimento e o cálculo da idade ser feito dinamicamente em PHP:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Calculadora de Idade</title>
</head>
<body>
<h2>Calcule sua Idade</h2>
<form action="" method="POST">
<label for="data_nascimento">Data de Nascimento:</label>
<input type="date" id="data_nascimento" name="data_nascimento" required>
<br><br>
<input type="submit" value="Calcular Idade">
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$dataNascimento = $_POST['data_nascimento'];
function calcularIdade($dataNascimento) {
$dataNascimentoObj = new DateTime($dataNascimento);
$dataAtual = new DateTime();
$idade = $dataAtual->diff($dataNascimentoObj);
return $idade->y;
}
$idade = calcularIdade($dataNascimento);
echo "<h3>Sua idade é: $idade anos.</h3>";
}
?>
</body>
</html>
Explicação do exemplo completo:
- O formulário HTML coleta a data de nascimento do usuário.
- Quando o formulário é enviado, o PHP captura a data inserida e calcula a idade usando a função
calcularIdade()
. - A idade calculada é exibida dinamicamente na página.
Calcular a idade em PHP é uma tarefa simples com as ferramentas certas. Usar a classe DateTime
é a maneira mais eficiente e precisa, mas também existem alternativas mais antigas com strtotime
e date
. Seja qual for a abordagem escolhida, agora você pode facilmente implementar esse cálculo em seus projetos.
Então conheça o curso online que já ajudou milhares de pessoas a aprender a programar e desenvolver seus próprios projetos do ZERO e usando orientação a objetos de uma forma fácil de entender.
CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS:
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Sobre o Autor
0 Comentários