汎用的に使える和暦フォーマット関数を作成してみました。元号は漢字表記とアルファベットに対応し、通常の日付フォーマットを利用することが可能です。また、明治以降に対応し、平成の次の新元号が決まったら書き換えれば済む(改元の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 件のコメント








