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:

  1. new DateTime($dataNascimento): Cria um objeto DateTime a partir da data de nascimento fornecida (no formato Y-m-d, ou seja, ano-mês-dia).

  2. new DateTime(): Cria um objeto DateTime representando a data atual.

  3. $dataAtual->diff($dataNascimentoObj): A função diff() calcula a diferença entre a data atual e a data de nascimento. Essa diferença é retornada como um objeto DateInterval, que contém a diferença em anos, meses, dias, etc.

  4. $idade->y: A propriedade y do objeto DateInterval representa a diferença em anos, que é a idade da pessoa.

  5. 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:

  1. strtotime($dataNascimento): Converte a string da data de nascimento em um timestamp Unix (o número de segundos desde 01-01-1970).

  2. date('Y') - date('Y', $dataNascimentoTimestamp): Calcula a idade subtraindo o ano atual do ano de nascimento.

  3. 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:

  1. O formulário HTML coleta a data de nascimento do usuário.

  2. Quando o formulário é enviado, o PHP captura a data inserida e calcula a idade usando a função calcularIdade().

  3. 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.

QUER APRENDER PHP ORIENTADO A OBJETOS OU APERFEIÇOAR O QUE JÁ SABE?

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:

CLIQUE AQUI 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

Tags:

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *