easter_daysRETURNS the number of days after
March 21 on which Easter falls for a given year.
<?php
int easter_days ( int|null $year = null ,
int $mode = CAL_EASTER_DEFAULT )
where,
$year = The year as a integer or null
$mode = To allow the Easter dates to be calculated based on the
Gregorian calendar during the years 1582 - 1752
( SEE the below TABLE )
?>
$year
The year as a integer.
$mode
CONSTANT |
VAL |
WHAT DOES |
DEFAULT |
CAL_EASTER_DEFAULT |
0 |
Calculate Easter for years before 1753 according to the Julian calendar, and for later years according to the Gregorian calendar |
CAL_EASTER_DEFAULT |
CAL_EASTER_ROMAN |
1 |
Calculate Easter for years before 1583 according to the Julian calendar, and for later years according to the Gregorian calendar |
CAL_EASTER_ALWAYS_GREGORIAN |
2 |
Calculate Easter according to the proleptic Gregorian calendar |
CAL_EASTER_ALWAYS_JULIAN |
3 |
Calculate Easter according to the Julian calendar |
ed48 |
Sinze PHP 8.0.0 $year is nullable.
The entered $year is between 1970 and 2037.
If $year = null or omitted, the $year assumes the current year according to the localtime.
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.
EXERCISE
<?php
date_default_timezone_set('America/Los_Angeles');
$days2yeareaster01 = easter_days(date("Y"));
$dtdftz01 = date_default_timezone_get();
setlocale(LC_ALL, "en_US", "american",
"american english",
"american-english",
"english-american",
"english-us",
"english-usa", "enu",
"us", "usa");
echo $days2yeareaster01 . ' days after March 21.<br>
This means that 31 days are missing for Easter.<br><br>';
$d21mar01 = strtotime('Mar 21 ' . date("Y") . ' 00:00:00');
$tseaster01 = strtotime('+'. $days2yeareaster01 . ' days', $d21mar01);
$deastr01 = strftime("%A, %B %d, %Y %Hh %Mmin %Ss", $tseaster01);
echo $deastr01 . '.<br><br>';
?>
EXERCISE
<?php
date_default_timezone_set('America/Sao_Paulo');
$days2yeareaster02 = easter_days(date("Y"));
$dtdftz02 = date_default_timezone_get();
setlocale(LC_ALL, "pt_BR.utf-8", "portuguese-brazil", "ptb");
echo $days2yeareaster02 . ' days after March 21.<br>
This means that 31 days are missing for Easter.<br><br>';
$d21mar02 = strtotime('Mar 21 ' . date("Y") . ' 00:00:00');
$tseaster02 = strtotime('+'. $days2yeareaster02 . ' days', $d21mar02);
$deastr02 = strftime("%A, %B %d, %Y %Hh %Mmin %Ss", $tseaster02);
echo $deastr02 . '.<br><br>';
?>
EXERCISE
<?php
date_default_timezone_set('UTC');
$days2yeareaster03 = easter_days(date("Y"));
$dtdftz03 = date_default_timezone_get();
setlocale(LC_ALL, "en_US", "american",
"american english",
"american-english",
"english-american",
"english-us",
"english-usa",
"enu", "us", "usa");
echo $days2yeareaster03 . ' days after March 21.<br>
This means that 31 days are missing for Easter.<br><br>';
$d21mar03 = strtotime('Mar 21 ' . date("Y") . ' 00:00:00');
$tseaster03 = strtotime('+'. $days2yeareaster03 . ' days', $d21mar03);
$deastr03 = strftime("%A, %B %d, %Y %Hh %Mmin %Ss", $tseaster03);
echo $deastr03 . '.<br><br>';
?>
EXERCISE
<?php
date_default_timezone_set('UTC');
$year04 = mt_rand(1582, 1752);
$days2yeareaster04 = easter_days($year04, CAL_EASTER_ROMAN);
$dtdftz04 = date_default_timezone_get();
setlocale(LC_ALL, "en_US", "american",
"american english",
"american-english",
"english-american",
"english-us",
"english-usa",
"enu", "us", "usa");
echo $days2yeareaster04 . ' days after March 21.<br>
This means that 31 days are missing for Easter.<br><br>';
$d21mar04 = strtotime('Mar 21 ' . $year04 . ' 00:00:00');
$tseaster04 = strtotime('+'. $days2yeareaster04 . ' days', $d21mar04);
$deastr04 = strftime("%A, %B %d, %Y %Hh %Mmin %Ss", $tseaster04);
echo $deastr04 . '.<br><br>';
?>
EXERCISE
<?php
date_default_timezone_set('America/Sao_Paulo');
$tmnow05 = time();
$datenow05 = date('Y-m-d', $tmnow05);
echo $datenow05 . '<br><br>';
$alwgr05 = mt_rand(1970, 2037);
$year05 = idate("Y");
$tmnew05 = (array)date_create($alwgr05 . '-03-31');
$tm05 = $tmnew05['date'];
$sub05 = substr($tm05, 0, 10);
echo $sub05 . '<br>';
// CAL_EASTER_ALWAYS_GREGORIAN
$alwgr05n = easter_days($alwgr05, CAL_EASTER_ALWAYS_GREGORIAN);
if($year05 <= $sub05)
{
echo 'For the year: ' . $alwgr05 . '-03-21 will be missing '
. $alwgr05n . ' day (s) for the Easter.<br><br>';
}
else
{
echo 'For the year: ' . $alwgr05 . '-03-21 was missing '
. $alwgr05n . ' day (s) for the Easter.<br><br>';
}
?>
EXERCISE
<?php
$alwjl06 = 2021;
// CAL_EASTER_ALWAYS_GREGORIAN
$alwjl06n = easter_days($alwjl06, CAL_EASTER_ALWAYS_GREGORIAN);
echo 'For the ' . $alwjl06 . '-03-21, was missing '
. $alwjl06n . ' day (s) for the Easter.<br><br>';
?>