西暦和暦変換
西暦と和暦元号をPHPで相互変換
PHP
/**
*
* 西暦和暦変換
*
* @param int $year
* @param int $month
* @param int $day
* @param string $era
* @return array
*/
function getEra($year, $month, $day, $era = '')
{
if (empty($era)) {
// 西暦から和暦
$seireki = $year;
if ($seireki > 2020 || $seireki == 2019 && $month >= 5) {
// 令和 2019/5/1~
$era = '令和';
$wareki = $seireki - 2018;
} elseif ($seireki > 1989
|| $seireki === 1989 && $month > 1
|| $seireki == 1989 && $month == 1 && $day >= 8) {
// 平成 1989/1/8~
$era = '平成';
$wareki = $seireki - 1988;
} elseif ($seireki > 1926
|| $seireki == 1926 && $month > 12
|| $seireki == 1926 && $month == 12 && $day >= 25) {
// 昭和 1926/12/25~
$era = '昭和';
$wareki = $seireki - 1925;
} elseif ($seireki > 1912
|| $seireki == 1912 && $month > 7
|| $seireki == 1912 && $month == 7 && $day >= 30) {
// 大正 1912/7/30~
$era = '大正';
$wareki = $seireki - 1911;
} else {
// 明治 1868/1/25~
$era = '明治';
$wareki = $seireki - 1867;
}
} else {
// 和暦から西暦
$wareki = $year;
if ($era == '令和') {
$seireki = $wareki + 2018;
} elseif ($era == '平成') {
$seireki = $wareki + 1988;
} elseif ($era == '昭和') {
$seireki = $wareki + 1925;
} elseif ($era == '大正') {
$seireki = $wareki + 1911;
} else {
$seireki = $wareki + 1867;
}
}
return array($seireki, $wareki, $era);
}
西暦から和暦(新元号は対象外)
サンプル