PHPで和暦↔西暦を変換する

筆記体令和 Web制作

未だに和暦を使いたいという人がいることに驚きですが、どうしてもという場合は西暦との変換が役に立ちますね。西暦→和暦と和暦→西暦の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;

}
タイトルとURLをコピーしました