easter_days()
(PHP 4, PHP 5, PHP 7)
得到指定年份的3月21日到复活节之间的天数
说明
easter_days([int $year[,int $method= CAL_EASTER_DEFAULT]]): int
返回指定年份的3月21日到复活节之间的天数,如果没有指定年份,默认是当年。
这个函数可以用来代替easter_date()函数来计算Unix时间戳以外年份的复活节日期。(比如1970年以前或2037年以后)
复活节的日期是由尼西亚议会在AD325年确定的为每年春分月圆后的第一个星期日。春分一般是在3月21日,这就简化为只要计算满月的日期和紧挨的星期日的日期。这里所用的算法是在532年由Dionysius Exiguus所介绍的,参考了Julian历法和Gregorian历法这两个历法来提高精确度。(在1753年以前用Julian历法计算,该历法是一个以19年为周期来确定月亮的相位的历法。在1753年以后用Gregorian历法计算,该历法由Clavius和Lilius发明,由Pope Gregory 8世在1582年推广)
参数
- $year
正数形式的年份
- $method
当设置为
CAL_EASTER_ROMAN
时可以用Gregorian历法来计算1582-1752之间的复活节日期。更多可用的常量参考calendar constants。
返回值
根据给定参数$year年份而返回的3月21日至复活节的天数。
更新日志
版本 | 说明 |
---|---|
Since 4.3.0 | 参数$year可选,缺省默认值是当年。 |
Since 4.3.0 | 引入参数$method。 |
范例
easter_days() example
<?php echo easter_days(1999); // 14, i.e. April 4 echo easter_days(1492); // 32, i.e. April 22 echo easter_days(1913); // 2, i.e. March 23 ?>
参见
easter_date()
得到指定年份的复活节午夜时的Unix时间戳。
This function returns an array of timestamp corresponding to Dutch National holidays. Liberation Day (Bevrijdingsdag) is added as a National holiday once every five years (2000, 2005, 2010, ...). <?php function getHolidays($year = null) { if ($year === null) { $year = intval(date('Y')); } $easterDate = easter_date($year); $easterDay = date('j', $easterDate); $easterMonth = date('n', $easterDate); $easterYear = date('Y', $easterDate); $holidays = array( // Nieuwjaarsdag mktime(0, 0, 0, 1, 1, $year), // 1e Kerstdag mktime(0, 0, 0, 12, 25, $year), // 2e Kerstdag mktime(0, 0, 0, 12, 26, $year) ); // Bevrijdingsdag if (($year % 5) == 0) { $holidays[] = mktime(0, 0, 0, 5, 5, $year); } // Koninginnedag (< 2014) of Koningsdag (>= 2014). // Verplaats naar zaterdag als het valt op zondag. if ($year <= 2013) { // Koninginnedag <= 2013 if (date('w', mktime(0, 0, 0, 4, 30, $year)) == 0) { // Op zondag? $holidays[] = mktime(0, 0, 0, 4, 29, $year); // Verplaats naar zaterdag } else { $holidays[] = mktime(0, 0, 0, 4, 30, $year); // Koninginnedag } } else { // Koningsdag > 2014 if (date('w', mktime(0, 0, 0, 4, 27, $year)) == 0) { // Op zondag? $holidays[] = mktime(0, 0, 0, 4, 26, $year); // Verplaats naar zaterdag } else { $holidays[] = mktime(0, 0, 0, 4, 27, $year); // Koningsdag } } // Onderstaande dagen hebben een datum afhankelijk van Pasen // Goede Vrijdag (= pasen - 2) $holidays[] = strtotime('-2 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear)); // 1e Paasdag $holidays[] = mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear); // 2e Paasdag (= pasen +1) $holidays[] = strtotime('+1 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear)); // Hemelvaartsdag (= pasen + 39) $holidays[] = strtotime('+39 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear)); // 1e Pinksterdag (= pasen + 49) $holidays[] = strtotime('+49 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear)); // 2e Pinksterdag (= pasen + 50) $holidays[] = strtotime('+50 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear)); sort($holidays); return $holidays; } $holidays = getHolidays(2014); foreach ($holidays as $holiday) { echo date('d-M-Y', $holiday) . '<br>'; } ?>
Also, be aware that the eastern orthodox churches sometimes have different dates for easter. See, for example <http://webexhibits.org/calendars/calendar-christian-easter.html>. And note that the dates of easter a subject to change, for example, the churches might some day decide to unify the dates.