array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.easter-date.php', 1 => 'easter_date', ), 'up' => array ( 0 => 'ref.calendar.php', 1 => 'カレンダー 関数', ), 'prev' => array ( 0 => 'function.cal-to-jd.php', 1 => 'cal_to_jd', ), 'next' => array ( 0 => 'function.easter-days.php', 1 => 'easter_days', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/calendar/functions/easter-date.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
easter_date — 指定した年における復活祭の真夜中のUnix時を得る
指定した年yearにおける復活祭の真夜中のUnix時を返します。
復活祭の日付は、西暦325年の Nicaea 会議で春分の日の後の 最初の満月の後の日曜日として定められました。 満月とその次の日曜日の日付の計算を簡単にするために 春分の日は常に3月21日になるとして計算されます。 ここで用いるアルゴリズムは、532年頃、Dionysius Exiguus により 導出されたものです。(1753年より前の年に関して)ユリウス暦の元では 月の周期を追うために簡単な19年周期が用いられます。グレゴリウス暦 (1753年以降。この暦は、ClaviusとLiliusにより考案され、 教皇グレゴリウス13世により1582年10月に導入、イギリス及びその植民地に 1752年9月に導入された。) のもとで、二つの補正係数が周期をより正確に作成するために追加されました。
year
年の値。32ビットのシステムでは、
1970 から 2037 までである必要があります。
64ビットのシステムでは、
1970 から 2,000,000,000 までである必要があります。
省略した場合、もしくは null
の場合は、
デフォルトとしてローカルタイムにおける現在の年を使います。
mode
CAL_EASTER_ALWAYS_JULIAN
を設定すると、
ユリウス暦のカレンダをベースにして復活祭の日付が計算できます。
calendar の定数 を参照ください。
復活祭の日を Unix タイムスタンプで返します。
32ビットのシステムでは、year の値が 1970 より前か 2037 より後の場合、 ValueError がスローされます。 64ビットのシステムでは、year の値が 1970 より前か 2,000,000,000 より後の場合、 ValueError がスローされます。
バージョン | 説明 |
---|---|
8.3.0 |
64ビットのシステムでは、
year の値として
1970 から 2,000,000,000 までの値を受け入れるようになりました。
|
8.0.0 |
year は、nullable になりました。
|
8.0.0 |
year が範囲外の値の場合、
ValueError がスローされるようになりました。
これより前のバージョンでは、
E_WARNING が発生して false を返していました。
|
例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
?>
例2 easter_date() を DateTime と一緒に使う
<?php
$timestamp = easter_date(2023);
$datetime = new \DateTime();
$datetime->setTimestamp($timestamp);
echo $datetime->format('M-d-Y'); // Apr-09-2023
?>
注意:
easter_date() は、システムの C ライブラリの関数を利用します。 PHP 組み込みの日付・時刻関数を使うわけではなりません。 つまり、easter_date() が利用するタイムゾーンは環境変数
TZ
の値であり、PHP の デフォルトのタイムゾーンは考慮しません。 その結果、PHP の他の日付関数と組み合わせて使ったときに予期せぬ結果になる可能性があります。回避策として、easter_days() を DateTime や DateInterval と組み合わせて使えば、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