【PHP】生年月日(「Y年n月j日」形式文字列)から年齢を取得する

PHPで、例えば生年月日である「1988年4月20日」の文字列をgetAge関数に渡して年齢「31歳」を取得します。
「Y年n月j日」形式の生年月日から年齢を求める関数が調べても出てこなかったので用意してみました。

生年月日(「Y年n月j日」形式文字列)から年齢を取得する関数

// 年齢取得
function getAge( $birthday ) {

    $birthYYMMDD = normalizeDate($birthday);
    
    if (empty($birthYYMMDD)) {
         return "";
    }    
    $now = date("Ymd");
    return (string)floor(($now-$birthYYMMDD)/10000) . "歳";
}

// 年月日をYYYYMMDD形式の日付文字列に変換
function normalizeDate( $inStr ) {
    // 年月日の各パーツを分割する
    $flg = preg_match( "/([0-9]*)年([0-9]*)月([0-9]*)日/", $inStr, $data );
    if (($flg == false) || (Count($data) != 4)) {
        return "";
    }
    
    // 先頭0埋めでYYYYMMDD形式の日付文字列に変換する
    $outStr = sprintf( "%04.4d%02.2d%02.2d", $data[1], $data[2], $data[3] );
 
    return $outStr;
}

<参考サイト>

[PHP]年月日の文字が入った日付文字列を,YYYYMMDDに変換する(2012年1月31日 -> 20120131)
PHPで、例えば「2012年1月31日」といった、書式編集されている日付文字列を、 「20120131」のよう…
スポンサーリンク