サイト制作に関するメモ書き

HOME > JavaScript > 西暦を和暦に変換する

西暦を和暦に変換する

令和になったタイミングということで、JavaScriptで西暦の年月日を和暦に変換する実装をしてみました。

サンプルコード

表示確認用に年月日の入力エリアと結果表示する要素を用意します。

HTML

<input id="input" type="text" value="2019/5/1" placeholder="YYYY/M/D">
<div id="result"></div>

JavaScriptで変換処理を記述します。
今回の対象は明治以降にしています。

JavaScript

// 表示確認用
var input = document.getElementById('input');
var result = document.getElementById('result');
var target = new Date(input.value);
result.innerHTML = convert_to_japanese_calendar(target);
// キー入力した際に変換を実行する
input.addEventListener('keyup', function() {
	target = new Date(input.value);
	result.innerHTML = convert_to_japanese_calendar(target);
});

/**
 * 指定した西暦の年月日を和暦に変換する
 * @param {date} target - 変換する年月日
 */
function convert_to_japanese_calendar(target) {
	// 元号の情報
	var jaCalender =  [
		{
			era: '明治',
			start: '1868/1/25'
		}, {
			era: '大正',
			start: '1912/7/30'
		}, {
			era: '昭和',
			start: '1926/12/25'
		}, {
			era: '平成',
			start: '1989/1/8'
		}, {
			era: '令和',
			start: '2019/5/1'
		}, 
	]

	for (var i = jaCalender.length - 1; i >= 0; i--) {
		var t = new Date(jaCalender[i]['start']);
		// 元号の範囲に入っている場合
		if(target >= t) {
			// 和暦に変換して返す
			return jaCalender[i]['era'] + (target.getFullYear() - t.getFullYear() + 1) + '年' + (target.getMonth() + 1) + '月' + target.getDate() + '日';
		}
		// 設定した元号の範囲に入らなかった場合
		if(i <= 0) {
			return '対象範囲外です';
		}
	}
}

12~49行目の関数が西暦を和暦に変換する処理で、指定した年月日が元号の範囲に入っているかどうかを調べて、範囲に入っている場合は和暦を返しています。
和暦の年は指定した年と元号の開始年の差に1を足して算出しています。
西暦を和暦に変更するデモページ

ざっと試してみて問題なさそうでしたが、何かおかしな点あればコメントでご連絡ください。
 

“西暦を和暦に変換する” への1件のコメント

  1. ks より:

    有難うございました。
    試してみました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

▲PAGE TOP