W3docs

easter_days()

Aprenda a usar a função easter_days() do PHP para calcular o número de dias após 21 de março em que a Páscoa ocorre para um dado ano.

Introdução

Bem-vindo ao nosso guia sobre como calcular a data da Páscoa usando PHP. Mostraremos como determinar a data para qualquer ano e como implementar isso em seus projetos. Exploraremos a história da Páscoa e os cálculos matemáticos envolvidos na determinação da data. Ao final deste guia, você terá um entendimento completo de como calcular a data da Páscoa usando PHP.

O que é a Páscoa?

A Páscoa é um feriado cristão que celebra a ressurreição de Jesus Cristo dos mortos. É um dos feriados mais importantes do calendário cristão e é celebrado em todo o mundo. A Páscoa cai em uma data diferente a cada ano, e essa data é determinada por um conjunto de cálculos complexos.

História da Páscoa

A Páscoa é celebrada pelos cristãos há mais de 2.000 anos. As origens exatas do feriado não são claras, mas acredita-se que tenha surgido de celebrações pagãs da primavera. O nome "Páscoa" em inglês, "Easter", acredita-se ter vindo da palavra do inglês antigo "ēastre", que era um festival pagão que celebrava o equinócio de primavera.

Na tradição cristã, a Páscoa celebra a ressurreição de Jesus Cristo dos mortos. De acordo com a Bíblia, Jesus foi crucificado na Sexta-feira Santa e ressuscitou três dias depois, no Domingo de Páscoa. A Páscoa é celebrada no domingo seguinte à primeira lua cheia após o equinócio vernal, que geralmente cai entre 22 de março e 25 de abril.

Calculando a Data da Páscoa

A data da Páscoa é determinada por um conjunto de cálculos complexos baseados nos ciclos da lua e do sol. Os cálculos foram desenvolvidos pela primeira vez pelo Concílio de Niceia em 325 d.C. e foram refinados ao longo dos séculos.

A data da Páscoa é calculada usando a seguinte fórmula:

a = year mod 19
b = year mod 4
c = year mod 7
d = (19 * a + 24) mod 30
e = (2 * b + 4 * c + 6 * d + 5) mod 7
f = d + e + 22

Se f for menor ou igual a 31, então a Páscoa cai em março no dia f. Se f for maior que 31, então a Páscoa cai em abril no dia f - 31.

Observação: Este algoritmo clássico funciona para a maioria dos anos, mas possui casos extremos conhecidos (por exemplo, 1954, 1981, 2049, 2079, 2099) em que o resultado pode estar errado por um dia. Para aplicações em produção, considere usar uma biblioteca de calendário dedicada ou implementar as regras completas de correção gregoriana.

Usando PHP para Calcular a Data da Páscoa

Agora que entendemos a história e os cálculos por trás da data da Páscoa, vamos ver como podemos usar PHP para calcular a data da Páscoa para qualquer ano. Começaremos criando uma função PHP que recebe um ano como argumento e retorna a data da Páscoa para aquele ano.

A função segue estas etapas:

  1. Calcular os restos a, b e c com base no ano de entrada.
  2. Calcular os valores intermediários d e e usando as fórmulas dos ciclos lunar e solar.
  3. Determinar f, que representa o deslocamento em dias a partir de 22 de março.
  4. Converter f em mês e dia, e então formatar o resultado usando DateTime. (Consulte date_date_set() e date_format() para os auxiliares de data subjacentes.)

O Código PHP para Calcular a Data da Páscoa

<?php

function get_easter_date($year) {
  $a = $year % 19;
  $b = $year % 4;
  $c = $year % 7;
  $d = (19 * $a + 24) % 30;
  $e = (2 * $b + 4 * $c + 6 * $d + 5) % 7;
  $f = $d + $e + 22;
  if ($f <= 31) {
    $month = 3;
    $day = $f;
  } else {
    $month = 4;
    $day = $f - 31;
  }
  // Use DateTime for modern object-oriented PHP (mktime is legacy, not strictly deprecated)
  $date = new DateTime();
  $date->setDate($year, $month, $day);
  return $date->format('Y-m-d');
}

echo get_easter_date(2024); // Outputs: 2024-03-31

A Função Nativa easter_days()

O título do capítulo faz referência à função nativa easter_days() do PHP, que é a forma padrão de calcular a Páscoa em código de produção. Esta função retorna o número de dias após 21 de março em que a Páscoa cai para um determinado ano. Ela lida automaticamente com todas as correções de calendário e casos extremos, eliminando a necessidade de aritmética modular manual.

echo easter_days(2024); // Returns 10 (March 21 + 10 days = March 31)

Embora o algoritmo personalizado acima seja útil para fins educacionais, easter_days() é recomendada para aplicações do mundo real devido à sua precisão, simplicidade e tratamento integrado de anos bissextos e ajustes do calendário gregoriano.

Para converter o deslocamento em uma data de calendário real, combine easter_days() com uma data base de 21 de março:

$year = 2024;
$easter = new DateTime("$year-03-21");
$easter->modify('+' . easter_days($year) . ' days');
echo $easter->format('Y-m-d'); // Outputs: 2024-03-31

O PHP também oferece a função easter_date() relacionada, que retorna a data da Páscoa diretamente como um timestamp Unix em vez de um deslocamento em dias.

Funções Relacionadas

Prática

Prática
Qual é a finalidade da função easter_days() no PHP?
Qual é a finalidade da função easter_days() no PHP?
Was this page helpful?