easter_date

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

easter_date得到指定年份的复活节午夜时的 Unix 时间戳

说明

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

返回指定年份的复活节午夜时的 Unix 时间戳。

警告

如果指定的年份超出 Unix 时间戳(即通常在 32 位系统上指定 1970 年以前或 2037 年以后)的范围,该函数将生成一个警告。

复活节的日期是由尼西亚议会在公元 325 年确定的为每年春分月圆后的第一个星期日。春分一般是在 3 月 21 日,这就简化为只要计算满月的日期和紧挨的星期日的日期。这里所用的算法是在 532 年由 Dionysius Exiguus 引入。在 1753 年以前用儒略历计算,一个简单的 19 年周期用于追踪月相。在 1753 年之后公历(由 Clavius 和 Lilius 设计,1582 年 10 月由教皇 Gregory 十三世引入,并于 1752 年 9 月进入英国及其当时的殖民地)添加了两个校正因子以使周期更准确。

参数

year

1970 年至 2037 年之间的数字类型的年份。如果省略或者为 null,则根据本地时间默认为当前年份。

mode

当设置为 CAL_EASTER_ALWAYS_JULIAN 时,允许基于儒略历计算复活节时间。参见 calendar 常量

返回值

复活节日期的 Unix 时间戳。

更新日志

版本 说明
8.0.0 year 现在可为空(nullable)。

范例

示例 #1 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

?>

注释

注意:

easter_date() 依赖于系统的 C 库 time 函数,而不是使用 PHP 内置的 date 和 time 函数。因此 easter_date() 使用 TZ 环境变量来确定应该运行的时区,而不是使用 PHP 默认时区 ,此函数与 PHP 其他 date 函数一起使用时会出现意外行为。

有一种解决方案,可以使用带 DateTimeDateIntervaleaster_days() 来计算 PHP 时区中的复活节开始时间,如下所示:

<?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("Easter in %d is on %s\n",
$year,
get_easter_datetime($year)->format('F j'));
}
?>

以上例程会输出:

Easter in 2012 is on April 8
Easter in 2013 is on March 31
Easter in 2014 is on April 20
Easter in 2015 is on April 5

参见

  • easter_days() - 得到指定年份的 3 月 21 日到复活节之间的天数 用于计算 1970 年之前或 2037 年之后的复活节。

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top