[PHP] 汎用和暦フォーマット関数(新元号対応版)
汎用的に使える和暦フォーマット関数を作成してみました。元号は漢字表記とアルファベットに対応し、通常の日付フォーマットを利用することが可能です。また、明治以降に対応し、平成の次の新元号が決まったら書き換えれば済む(改元の2019年5月1日は組み込んであります)ようになっています。
- 「平成」などの漢字表記と「H」などのアルファベット表記ができます
- 最初の年を「元年」と表記します
- 年以外の部分に日付フォーマットの書式が使えます
- 新元号にすぐに対応できるようにしました
- 明治以降の元号に対応しています
- 明治より前は「西暦1192」や「AD 1192」のような表記になります
使い方
// 平成30年1月28日 convert_jpdt(time()); // 平成30年01月28日 convert_jpdt(time(),'年m月d日'); // H30.01.28 convert_jpdt(time(),'.m.d',false);
ソースコード
// 西暦→和暦変換 function convert_jpdt($dt,$fmt='年n月j日',$kanji=true) { $date = (int)date('Ymd',$dt); $year = (int)date('Y',$dt); if ($date >= 20190501) { //令和元年(2019年5月1日以降) $name = " R令和"; $year -= 2018; } else if ($date >= 19890108) { //平成元年(1989年1月8日以降) $name = " H平成"; $year -= 1988; } else if ($date >= 19261225) { //昭和元年(1926年12月25日以降) $name = " S昭和"; $year -= 1925; } else if ($date >= 19120730) { //大正元年(1912年7月30日以降) $name = " T大正"; $year -= 1911; } else if ($date >= 18680125) { //明治元年(1868年1月25日以降) $name = " M明治"; $year -= 1867; } else { $name = 'AD 西暦'; } if ($kanji) { $name = substr($name,3); if ($year==1) $year = '元'; } else { $name = ltrim(substr($name,0,3)); } return $name.$year.date($fmt,$dt); }
令和に対応しました
新元号が発表になりましたので「令和」に対応しました。漢字表記の場合はちゃんと「令和元年」と変換します。
0 件のコメント