かなりマニアックな内容ですが、命日から中陰(七日ごと四十九日まで)、年忌(一周忌〜五十回忌)までの日付を取得する関数を作りました。
##開発環境
MAMP
##コード
<?php
function calcTyuin($day)
{
$tyuin_days = [];
for ($i = 0; $i < 7; $i++) {
if ($i === 0) {
$date = date_create($day);
}
date_add($date, date_interval_create_from_date_string('7 days'));
$tyuin_days[] = date_format($date, 'Y-m-d');
}
return $tyuin_days;
}
function calcNenki($day)
{
$nenki_days = [];
$add_years = [1, 2, 6, 12, 16, 24, 32, 49];
foreach ($add_years as $add_year) {
$date = date_create($day);
date_add($date, date_interval_create_from_date_string($add_year . 'year'));
$nenki_days[] = date_format($date, 'Y-m-d');
}
return $nenki_days;
}
$day = '2020-01-01';
$tyuin = [];
$nenki = [];
$tyuin = calcTyuin($day);
$nenki = calcNenki($day);
//中陰
foreach ($tyuin as $tyuin_day) {
echo $tyuin_day . "\n";
}
//年忌
foreach ($nenki as $nenki_day) {
echo $nenki_day . "\n";
}
##解説
中陰を計算する関数と、年忌を計算する関数を用意しました。
計算するといっても日を足したり年を足したりするだけですが。
中陰を計算する関数では、for文を用いて基準となる日に七日*6回足していき配列に格納しました。
年忌を計算する関数では、あらかじめ加算用の配列を用意しておき、foreach文を用いて基準となる日に加算用配列の年を足していき配列に格納しました。
次は再帰関数を用いてチャレンジしてみたいと思います。