西暦の日付から元号を調べる[javascript]
2022年2月8日
今年は令和なん年で、昭和っていつまで?(--)?
というわけで、調べました。
元号(年号)の初日と最終日
元号 | 年 | 最終日/初日 |
---|---|---|
令和 | - | - |
1 | 2019年 5月 1日 | |
平成 | 31 | 2019年 4月30日 |
1 | 1989年 1月 8日 | |
昭和 | 64 | 1989年 1月 7日 |
1 | 1926年12月25日 | |
大正 | 15 | 1926年12月24日(12月25日) |
1 | 1912年 7月30日 | |
明治 | 45 | 1912年 7月29日 |
1 | 1868年 1月 1日(9月8日) |
西暦の日付から元号(年号)を取得
年月日を変更すると、年号が確認できます。
年
月
日
※自作関数から取得
※Dateオブジェクトから取得
上記の表から関数を作る
※Dateオブジェクトに用意されているので、自作する必要性はないですが一応。
function get_gengou(y, m, d) {
let gengou = {"meiji":"明治","taisyou":"大正","syouwa":"昭和","heisei":"平成","reiwa":"令和"}, i, x;
if (y > 2019 || (y == 2019 && m >= 5)) {
i = "reiwa";
x = y - 2019 + 1;
} else if (y > 1989 || (y == 1989 && ((m > 1) || (m == 1 && d >= 8)))) {
i = "heisei";
x = y - 1989 + 1;
} else if (y > 1926 || (y == 1926 && (m == 12 && d >= 25))) {
i = "syouwa";
x = y - 1926 + 1;
} else if (y > 1912 || (y == 1912 && ((m > 7) || (m == 7 && d >= 30)))) {
i = "taisyou";
x = y - 1912 + 1;
} else if (y >= 1868) {
i = "meiji";
x = y - 1868 + 1;
} else {
return ["",0];
}
return [gengou[i], x];
}
JavascriptのDateオブジェクトに用意されているものから取得
let dt = new Date(y, (m - 1), d);
console.log( dt.toLocaleDateString("ja-JP-u-ca-japanese", {year:'numeric',month:'long',day:'numeric'}) );
console.log( new Intl.DateTimeFormat('ja-JP-u-ca-japanese', {era:'long',year:'numeric',month:'long',day:'numeric'}).format(dt) );