1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

命日から五十回忌までの日付を取得

Last updated at Posted at 2020-08-26

かなりマニアックな内容ですが、命日から中陰(七日ごと四十九日まで)、年忌(一周忌〜五十回忌)までの日付を取得する関数を作りました。

##開発環境
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文を用いて基準となる日に加算用配列の年を足していき配列に格納しました。

次は再帰関数を用いてチャレンジしてみたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?