元号
ここまで丁寧にする必要もないが
PHP
<?php
$today = date('Y-m-d');
$results = (function(string $entry) : array {
$wday_array = ['日', '月', '火', '水', '木', '金', '土'];
$date_reiwa = new DateTime('2019-05-01');
$date_heisei = new DateTime('1989-01-08');
$date_showa = new DateTime('1926-12-25');
$year_reiwa = (int) $date_reiwa->format('Y');
$year_heisei = (int) $date_heisei->format('Y');
$year_showa = (int) $date_showa->format('Y');
$date = new DateTime($entry);
$year = (int) $date->format('Y');
$mon = (int) $date->format('n');
$day = (int) $date->format('j');
$wday = (int) $date->format('w');
$wday_ja = $wday_array[$wday];
if ($date_reiwa <= $date) { // 令和
$era_ja = '令和';
$year_ja = $year - $year_reiwa + 1;
} else if ($date_heisei <= $date) { // 平成
$era_ja = '平成';
$year_ja = $year - $year_heisei + 1;
} else if ($date_showa <= $date) { // 昭和
$era_ja = '昭和';
$year_ja = $year - $year_showa + 1;
} else {
$era_ja = '';
$year_ja = $year;
}
if (1 === $year_ja) {
$year_ja = '元';
}
return [
'year' => $year,
'mon' => $mon,
'day' => $day,
'wday' => $wday,
'era_ja' => $era_ja,
'year_ja' => $year_ja,
'wday_ja' => $wday_ja,
'date_ja' => $era_ja . $year_ja . '年' . $mon . '月' . $day . '日(' . $wday_ja . ')',
];
})($today);
print_r($results);
追伸
このクラス(DateTime)の代わりに、DateTimeImmutable を使うことを推奨します。
https://www.php.net/manual/ja/class.datetime.php
だって
このクラス(DateTime)の代わりに、DateTimeImmutable を使うことを推奨します。
https://www.php.net/manual/ja/class.datetime.php
だって