PHP で年齢計算ツールを作成

PHP で年齢計算ツールを作成

PHPで年齢計算ツールを作成しました。
和暦と年齢、十二干支も見れるようにしています。
そのソースを公開します。

年齢計算ツールはこちらになります。

年齢の計算方法

年齢は、この計算方法でもとめることができます。
(本日の年月日8桁 – 誕生日の年月日8桁) / 10000
// 誕生日の年月日を8桁の数字に変更
$birthday_yyyymmdd = sprintf("%04d%02d%02d", $yyyy, $mm, $dd);

// (本日の年月日8桁 - 誕生日の年月日8桁) / 10000
$nenrei = (int) ((date('Ymd')-$birthday_yyyymmdd)/10000);

echo $nenrei . "歳";

西暦和暦年月日の関数

1年は、元年で表示しています。

//---------------------------------
// 西暦和暦年月日
// 引数 $yyyy 年
//    $mm 月
//    $dd 日
// 戻り値 西暦年月日+和暦年月日
//---------------------------------
function getSeirekiToWareki($yyyy, $mm, $dd){
	$seireki = sprintf("%d年%d月%d日", $yyyy, $mm, $dd);
	
	$yyyymmdd = sprintf("%04d%02d%02d", $yyyy, $mm, $dd);
	
	if($yyyymmdd>=18680125 && $yyyymmdd<=19120729){
		$yyyy = $yyyy - 1867;
		
		if($yyyy==1){
			$yyyy = "明治元";
		}
		else{
			$yyyy = "明治" . $yyyy;
		}
		$wareki = sprintf("%s年%d月%d日", $yyyy, $mm, $dd);
	}
	elseif($yyyymmdd>=19120730 && $yyyymmdd<=19261225){
		$yyyy = $yyyy - 1911;
		
		if($yyyy==1){
			$yyyy = "大正元";
		}
		else{
			$yyyy = "大正" . $yyyy;
		}
		$wareki = sprintf("%s年%d月%d日", $yyyy, $mm, $dd);
	}
	elseif($yyyymmdd>=19261226 && $yyyymmdd<=19890107){
		$yyyy = $yyyy - 1925;
		
		if($yyyy==1){
			$yyyy = "昭和元";
		}
		else{
			$yyyy = "昭和" . $yyyy;
		}
		$wareki = sprintf("%s年%d月%d日", $yyyy, $mm, $dd);
	}
	elseif($yyyymmdd>=19890108 && $yyyymmdd<=20190430){
		$yyyy = $yyyy - 1988;
		
		if($yyyy==1){
			$yyyy = "平成元";
		}
		else{
			$yyyy = "平成" . $yyyy;
		}
		$wareki = sprintf("%s年%d月%d日", $yyyy, $mm, $dd);
	}
	elseif($yyyymmdd>=20190501){
		$yyyy = $yyyy - 2018;
		
		if($yyyy==1){
			$yyyy = "令和元";
		}
		else{
			$yyyy = "令和" . $yyyy;
		}
		$wareki = sprintf("%s年%d月%d日", $yyyy, $mm, $dd);
	}
	
	return $seireki . "(" . $wareki . ")";
}

十二干支の取得関数

干支は、年を12で割ったあまりから判断することができます。

申(さる)
0 = 申(さる)
1 = 酉(とり)
2 = 戌(いぬ)
3 = 亥(いのしし)
4 = 子(ねずみ)
5 = 丑(うし)
6 = 寅(とら)
7 = 卯(うさぎ)
8 = 辰(たつ)
9 = 巳(へび)
10 = 午(うま)
11 = 未(ひつじ)
//---------------------------------
// 干支を取得
// 引数 $yyyy 西暦年
// 戻り値 干支
//---------------------------------
function getEto($yyyy){
    $amari = $yyyy % 12;
	
    $arr_eto = array(
        "申(さる)",
        "酉(とり)",
        "戌(いぬ)",
        "亥(いのしし)",
        "子(ねずみ)",
        "丑(うし)",
        "寅(とら)",
        "卯(うさぎ)",
        "辰(たつ)",
        "巳(へび)",
        "午(うま)",
        "未(ひつじ)"
        );
	
    return $arr_eto[$amari];
}