PHP 令和対応 指定した日付から和暦を取得する

概要

PHPで和暦を取得するプログラムです。
配列の書き方を古くしてあるのでPHP5系から対応しています。
令和対応+英字1文字の略称も対応しています。

和暦・元号を取得する

<?php
/**
 * 日付 (YYYY-MM-DD) から和暦を算出する PHP5系から対応
 *
 * @param string $day
 * @param string $format
 * @return string
 */
function wareki($day, $format = 'name')
{
    $wareki_list = array(
        array('name' => '令和', 'short' => 'R', 'timestamp' => 1556636400),
        array('name' => '平成', 'short' => 'H', 'timestamp' => 600188400),
        array('name' => '昭和', 'short' => 'S', 'timestamp' => -1357635600),
        array('name' => '大正', 'short' => 'T', 'timestamp' => -1812186000),
        array('name' => '明治', 'short' => 'M', 'timestamp' => -3216790800),
    );

    $wareki = '';
    foreach ($wareki_list as $item) {
        if ($item['timestamp'] <= strtotime($day)) {
            $wareki = $item[$format];
            break;
        }
    }
    return $wareki;
}

/*
 * テスト
 */
//明治
echo wareki('1868-01-25') . PHP_EOL;
//大正
echo wareki('1912-07-30') . PHP_EOL;
//昭和
echo wareki('1926-12-25') . PHP_EOL;
//平成
echo wareki('1989-01-08') . PHP_EOL;
//令和
echo wareki('2019-05-01', 'name') . PHP_EOL;
//現在 formatにshortと入れると略称で取得
echo wareki(date('Y-m-d'), 'short') . PHP_EOL;

 

ソースを保存してターミナルで php wareki.php と実行すると、下記のように結果が表示されます。

$ php wareki.php
明治
大正
昭和
平成
令和
R

まとめ

  • Functionを作成しておけば1行で和暦を取得することができます。
  • 2019-04-30を実行すると平成が返却されることを確認済み。
  • 明治より前は空文字が返却されますが、配列に追加すれば明治より前も対応できます。
  • 令和対応済み