ハジメラボ・ブログ | 【PHP】生まれてから何年何ヶ月何日を計算する方法 |【岡山】集客設計に自信あり。ホームページ制作・ECサイト運営はハジメクリエイト

ハジメラボ・ブログ | 【PHP】生まれてから何年何ヶ月何日を計算する方法 |【岡山】集客設計に自信あり。ホームページ制作・ECサイト運営はハジメクリエイト

ハジメラボ・ブログ

2021/11/10

【PHP】生まれてから何年何ヶ月何日を計算する方法

アプリ・ソフト

この時期にしか食べられない、敷島堂の栗おこわ(激うま)を、今年も食べることが出来て満足しているキューロ小坂です。

 

先日、メルマガで仕事関連の記事を書きました。
その時に、ブログでは仕事関連の記事をまったく書いていないことに気がついたので、今回はPHPについて書いてみようと思います。

 

Webシステムを作成する際に、生まれてからの日にちを計算する必要が出てきました。しかも、何日ではなく、何年何ヶ月何日で表示しなくてはいけません。

 

うるう年があるし計算は結構面倒だなと思ったのですが、よくよく考えてみると何年何ヶ月何日の計算は、うるう年を気にする必要がありません。

function calculateBirthdays($date)
{
    // 誕生日のチェック(日付フォーマットと未来の誕生日を入力していないか確認)
    $format = 'Y-m-d';
    $d      = date_create_from_format($format, $date);
    if ($d && date_format($d, $format) === $date && $date < date('Y-m-d')) {
        // 本日の年月日を数値化
        $now_year  = idate('Y');
        $now_month = idate('m');
        $now_day   = idate('d');

        // 誕生日を年月日に分解
        $birthday       = explode('-', $date);
        $birthday_year  = (int)$birthday[0];
        $birthday_month = (int)$birthday[1];
        $birthday_day   = (int)$birthday[2];

        $result_year = 0;

        // 年を計算
        if ($now_year > $birthday_year) {
            $result_year = $now_year - $birthday_year;
            if ($now_month < $birthday_month || ($now_month === $birthday_month && $now_day < $birthday_day)) {
                $result_year--;
            }
        }

        // 何ヶ月を計算
        $result_month = $now_month - $birthday_month;
        if ($now_day < $birthday_day) {
            $result_month--;
        }
        if ($result_month < 0) {
            $result_month += 12;
        }

        // 日を計算
        if ($now_day >= $birthday_day) {
            $result_day = $now_day - $birthday_day;
        } else {
            if ($now_month - 1 < 1) {
                $y = $now_year - 1;
                $m = 12;
                $d = 1;
            } else {
                $y = $now_year;
                $m = $now_month - 1;
                $d = 1;
            }

            $ymd        = $y . '-' . $m . '-' . $d;
            $result_day = date('t', strtotime($ymd)) - ($birthday_day - $now_day);
        }

        $result = $result_year . '年' . $result_month . 'ヶ月' . $result_day . '日';
    } else {
        $result = '誕生日エラー';
    }

    return $result;
}

echo calculateBirthdays('1982-12-20');
出力:38年10ヶ月13日

誕生日を「年」「月」「日」に分解して、それぞれで計算すればOKです。

これで生まれてから何年何ヶ月何日が表示されると思います。

キューロ小坂でした。

メルマガ

お客様の目的達成のために大切なこと

最高のホームページが出来たとしても、それは完成時点での最高でしかありません。
お客様を取り巻く環境は刻々と変化しています。そのためにも改善&育てていくことが必要です。
ハジメクリエイトは、アクセス解析等も活用しながら作成後のサポートも行っています。

WEBからのお問い合わせは

お問い合わせフォームへ

お電話でのお問い合わせは

株式会社ハジメクリエイト
平日 10:00~18:00
(土日祝お休み)
株式会社ハジメクリエイト
〒700-0951
岡山県岡山市北区田中604-14
TEL 086-250-2424
FAX 086-239-7803