easter_date

(PHP 4, PHP 5, PHP 7, PHP 8)

easter_dateObtém o timestamp Unix para a meia-noite da Páscoa de um ano informado

Descrição

easter_date(?int $year = null, int $mode = CAL_EASTER_DEFAULT): int

Retorna o timestamp Unix correspondente à meia-noite de Páscoa do ano informado.

A data do Dia de Páscoa foi definida pelo Concílio de Niceia no ano 325 D.C. como o domingo após a primeira lua cheia que caia no Equinócio de Primavera ou depois dele. Assume-se que o Equinócio seja sempre no dia 21 de março, portanto o cálculo se reduz a determinar a data da lua cheia e a data do domingo seguinte. O algoritmo usado aqui foi introduzido por volta do ano 532 por Dionísio, o Exíguo. Sob o calendário Juliano (para anos anteriores a 1753) um ciclo simples de 19 anos é usado para acompanhar as fases da lua. Sob o calendário Gregoriano (para anos posteriores a 1753 - concebido por Cristóvão Clávio e Luís Lílio, e introduzido pelo Papa Gregório XIII em outubro de 1582, e na Grã-Bretanha e suas então colônias em setembro de 1752) dois fatores de correção são adicionados para deixar o ciclo mais preciso.

Parâmetros

year

O ano deve ser um número entre 1970 e 2037 para sistemas de 32 bits, ou entre 1970 e 2.000.000.000 para sistemas de 64 bits. Se omitido ou null, será usado o padrão que é o ano atual conforme o horário local.

mode

Permite que datas de Páscoa sejam calculadas com base no calendário Juliano quando definido para CAL_EASTER_ALWAYS_JULIAN. Consulte também as constantes de calendário.

Valor Retornado

A data de Páscoa como um timestamp Unix.

Erros/Exceções

Uma exceção ValueError é lançada se o ano for anterior a 1970 ou posterior a 2037 em sistemas de 32 bits, ou posterior a 2.000.000.000 em sistemas de 64 bits.

Registro de Alterações

Versão Descrição
8.3.0 Em sistemas de 64 bits, o parâmetro year agora aceita valores na faixa de 1970 a 2.000.000.000.
8.0.0 year agora pode ser nulo.
8.0.0 Uma exceção ValueError agora é lançada quando year estiver fora do intervalo permitido. Anteriormente, um E_WARNING era emitido e a função retornava false.

Exemplos

Example #1 Exemplo de easter_date()

<?php

echo date("M-d-Y", easter_date(1999));        // Apr-04-1999
echo date("M-d-Y", easter_date(2000));        // Apr-23-2000
echo date("M-d-Y", easter_date(2001));        // Apr-15-2001

?>

Example #2 Usando easter_date() com DateTime

<?php

$timestamp = easter_date(2023);

$datetime = new \DateTime();
$datetime->setTimestamp($timestamp);

echo $datetime->format('M-d-Y'); // Apr-09-2023

?>

Notas

Note:

easter_date() depende das funções de horário da biblioteca C do sistema, ao invés de usar as funções de data e horário internas do PHP. Como uma consequência, easter_date() usa a variável de ambiente TZ para determinar o fuso horário onde ela deve operar, ao invés de usar o fuso horário padrão do PHP, o que pode retultar em comportamento inesperado ao usar esta função em conjunto com outras funções de data no PHP.

Como uma maneira de contornar isso, pode-se usar easter_days() com DateTime e DateInterval para calcular o início da Páscoa no fuso horário do PHP como no exemplo a seguir:

<?php
function get_easter_datetime($year) {
    $base = new DateTime("$year-03-21");
    $days = easter_days($year);

    return $base->add(new DateInterval("P{$days}D"));
}

foreach (range(2012, 2015) as $year) {
    printf("Páscoa em %d é no dia %s\n",
           $year,
           get_easter_datetime($year)->format('d/m'));
}
?>

O exemplo acima produzirá:

Páscoa em 2012 é no dia 08/04
Páscoa em 2013 é no dia 31/03
Páscoa em 2014 é no dia 20/04
Páscoa em 2015 é no dia 05/04

Veja Também

  • easter_days() - Obtém o número de dias depois de 21 de março no qual a Páscoa cai para um determinado ano para cálculo da Páscoa antes de 1970 ou depois de 2037