• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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.

    上篇:easter_date()

    下篇:FrenchToJD()