■誕生日から年齢を計算
<?php
// 誕生日
$birthday = array(
'year' => 2000,
'month' => 4,
'day' => 10,
);
// 西暦から和暦を取得
list($wareki, $year) = get_wareki($birthday['year'], $birthday['month'], $birthday['day']);
// 誕生日から満年齢を取得
$age = get_age($birthday['year'], $birthday['month'], $birthday['day']);
// 誕生日から数え年を取得
$kazoedoshi = get_kazoedoshi($birthday['year']);
// 結果を表示
echo '<p>誕生日は' , $wareki . $year . '年' . $birthday['month'] . '月' . $birthday['day'] . '日です。</p>';
echo '<p>満年齢は' , $age . '歳です。満年齢は履歴書、パスポート、行政に提出する書類などに使用されます。</p>';
echo '<p>数え年は' , $kazoedoshi . '歳です。数え年は七五三、長寿祝い、厄年などに使用されます。</p>';
exit;
/*
* 西暦から和暦を取得
*/
function get_wareki($year, $month, $day)
{
$date = sprintf('%04d%02d%02d', $year, $month, $day);
if ($date >= 20190501) {
$wareki = '令和';
$year -= 2018;
} elseif ($date >= 19890108) {
$wareki = '平成';
$year -= 1988;
} elseif ($date >= 19261225) {
$wareki = '昭和';
$year -= 1925;
} elseif ($date >= 19120730) {
$wareki = '大正';
$year -= 1911;
} elseif ($date >= 18680125) {
$wareki = '明治';
$year -= 1867;
} else {
$wareki = '';
}
return array($wareki, $year);
}
/*
* 誕生日から満年齢を取得
*/
function get_age($birth_year, $birth_month, $birth_day, $today = null)
{
$birthday = sprintf('%04d%02d%02d', $birth_year, $birth_month, $birth_day);
if (!preg_match('/^\d{8}$/', $today)) {
$today = date('Ymd');
}
return intval(($today - $birthday) / 10000);
}
/*
* 誕生年から数え年を取得
*/
function get_kazoedoshi($birth_year, $this_year = null)
{
if (!preg_match('/^\d{4}$/', $this_year)) {
$this_year = date('Y');
}
return $this_year - $birth_year + 1;
}