未だに和暦を使いたいという人がいることに驚きですが、どうしてもという場合は西暦との変換が役に立ちますね。西暦→和暦と和暦→西暦の2パターンをご紹介します。
西暦→和暦
function wareki($year) {
$eras = [
['year' => 2018, 'name' => '令和'],
['year' => 1988, 'name' => '平成'],
['year' => 1925, 'name' => '昭和'],
['year' => 1911, 'name' => '大正'],
['year' => 1867, 'name' => '明治']
];
foreach($eras as $era) {
$base_year = $era['year'];
$era_name = $era['name'];
if($year > $base_year) {
$era_year = $year - $base_year;
if($era_year === 1) {
return $era_name .'元年';
}
return $era_name . $era_year .'年';
}
}
return null;
}
和暦→西暦
function seireki($wareki_year) {
$wareki_year = str_replace('元年', '1年', mb_convert_kana($wareki_year, 'n'));
if(preg_match('!^(明治|大正|昭和|平成|令和)([0-9]+)年$!', $wareki_year, $matches)) {
$era_name = $matches[1];
$year = intval($matches[2]);
if($era_name === '明治') {
$year += 1867;
} else if($era_name === '大正') {
$year += 1911;
} else if($era_name === '昭和') {
$year += 1925;
} else if($era_name === '平成') {
$year += 1988;
} else if($era_name === '令和') {
$year += 2018;
}
return $year .'年';
}
return null;
}