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 + 22Se 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:
- Calcular os restos
a,beccom base no ano de entrada. - Calcular os valores intermediários
deeusando as fórmulas dos ciclos lunar e solar. - Determinar
f, que representa o deslocamento em dias a partir de 22 de março. - Converter
fem mês e dia, e então formatar o resultado usandoDateTime. (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-31A 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-31O 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
easter_date()— obtém a data da Páscoa como um timestamp Unix.checkdate()— valida uma data gregoriana.date_create()— cria um novo objetoDateTime.date_format()— formata umDateTimepara saída.