この前は知らなかった、JavascriptのtoLocaleDateStringメソッドで簡単に和暦を取得できる。
特に新年号前後の計算は煩雑になり、長いコードでロジックを入れて年号計算しなければいけない。
例の西暦1989年1月7日は、和暦昭和64年1月7日、1989年1月8日は平成1年1月8日と計算される。
年号を変わったら、更にロジックを組まなければいけない。
これらのロジックが一切なくて、toLocaleDateStringで簡単に解決できる。
下記のJavaScriptコード例を見てください
<script type="text/javascript">
// 1368/01/07を和暦表示する
var dt = new Date(1368, 0, 7);
var opt = {year:'numeric',month:'long',day:'numeric'};
var calendar_jp = dt.toLocaleDateString("ja-JP-u-ca-japanese", opt);
alert(calendar_jp);
→正平22年12月29日
// 1989/01/07を和暦表示する
var dt = new Date(1989, 0, 7);
var opt = {year:'numeric',month:'long',day:'numeric'};
var calendar_jp = dt.toLocaleDateString("ja-JP-u-ca-japanese", opt);
alert(calendar_jp);
//→昭和64年1月7日
// 1989/01/08を和暦表示する
var dt = new Date(1989, 0, 8);
var opt = {year:'numeric',month:'long',day:'numeric'};
var calendar_jp = dt.toLocaleDateString("ja-JP-u-ca-japanese", opt);
//→平成1年1月8日
alert(calendar_jp);
// 現在年
var dt = new Date();
var opt = {year:'numeric'};
var calendar_jp = dt.toLocaleDateString("ja-JP-u-ca-japanese", opt);
alert(calendar_jp);
//→平成29年
// 現在年月日
var dt = new Date();
var opt = {year:'numeric',month:'long',day:'numeric'};
var calendar_jp = dt.toLocaleDateString("ja-JP-u-ca-japanese", opt);
alert(calendar_jp);
//→現在年月日を表示、例:(現在時刻)平成29年11月18日
</script>