easter_date
指定した年における復活祭の真夜中のUnix時を得る
説明
int easter_date(intnull $year
= null
, int $mode
= CAL_EASTER_DEFAULT
)
復活祭の日付は、西暦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 がスローされます。
例
例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 で設定したタイムゾーンにおける復活祭の開始時刻を算出できます。
参考
-
1970年以前または2037年以降の復活祭の計算に関しては、
easter_days を参照ください。