easter_date
(PHP 4, PHP 5, PHP 7, PHP 8)
easter_date — Get Unix timestamp for local midnight on Easter of a given year
Description
The date of Easter Day was defined by the Council of Nicaea in
AD325 as the Sunday after the first full moon which falls on or
after the Spring Equinox. The Equinox is assumed to always fall
on 21st March, so the calculation reduces to determining the date
of the full moon and the date of the following Sunday. The
algorithm used here was introduced around the year 532 by
Dionysius Exiguus. Under the Julian Calendar (for years before
1753) a simple 19-year cycle is used to track the phases of the
Moon. Under the Gregorian Calendar (for years after 1753 -
devised by Clavius and Lilius, and introduced by Pope Gregory
XIII in October 1582, and into Britain and its then colonies in
September 1752) two correction factors are added to make the
cycle more accurate.
Parameters
year
-
The year must be a number between 1970 and 2037 for 32-bit systems, or between 1970 and 2,000,000,000 for 64-bit systems.
If omitted or null, defaults to the current year according to the local time.
mode
-
Allows Easter dates to be calculated based on the Julian calendar when set
to CAL_EASTER_ALWAYS_JULIAN. See also calendar constants.
Return Values
The easter date as a unix timestamp.
Errors/Exceptions
A ValueError is thrown if the year is earlier than 1970 or later than 2037
when running on a 32-bit system, or later than 2,000,000,000 on a 64-bit system.
Examples
Example #1 easter_date() example
<?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 Using easter_date() with DateTime
<?php
$timestamp = easter_date(2023);
$datetime = new \DateTime();
$datetime->setTimestamp($timestamp);
echo $datetime->format('M-d-Y'); // Apr-09-2023
?>
Notes
Note:
easter_date() relies on your system's C library time
functions, rather than using PHP's internal date and time functions. As a
consequence, easter_date() uses the
TZ environment variable to determine the time zone it
should operate in, rather than using PHP's
default time zone, which may
result in unexpected behaviour when using this function in conjunction
with other date functions in PHP.
As a workaround, you can use the easter_days() with
DateTime and DateInterval to
calculate the start of Easter in your PHP time zone as follows:
See Also
-
easter_days() - Get number of days after March 21 on which Easter falls for a given year for calculating Easter
before 1970 or after 2037