Date型の日付を、和暦の日付で表示するサンプルです。
サンプルソース
例)本日を和暦表示する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Date型⇒和暦表示サンプル</title> <script> function test(){ var a = getWarekiYmd(); alert(a); } function getWarekiYmd(){ //年号毎の開始日付 var m = new Date(1868,8,8); //1868年9月8日~ var t = new Date(1912,6,30); //1912年7月30日~ var s = new Date(1926,11,25); //1926年12月25日~ var h = new Date(1989,0,8); //1989年1月8日~ var a = new Date(2019,4,1); //2019年5月1日~ //対象日付 var dt = new Date(); //当日の場合 // var dt = new Date(1989,0,7); //日付指定の場合(月は-1してください) var y = dt.getFullYear(); var mo = ("00" + (dt.getMonth()+1)).slice(-2); //※ var d = ("00" + dt.getDate()).slice(-2); //※ //※ゼロ埋めしたくない場合は以下に置き換えてください。 //var mo = dt.getMonth()+1; //var d = dt.getDate(); var gen=""; var nen=0; //元号判定 if(m<=dt && dt<t){ gen = "明治"; nen = (y - m.getFullYear())+1; }else if(t<=dt && dt<s){ gen = "大正"; nen = (y - t.getFullYear())+1; }else if(s<=dt && dt<h){ gen = "昭和"; nen = (y - s.getFullYear())+1; }else if(h<=dt && dt<a){ gen = "平成"; nen = (y - h.getFullYear())+1; }else if(a<=dt){ gen = "令和"; nen = (y - a.getFullYear())+1; }else{ gen = ""; } //1年の場合は"元"に置き換え if(nen == 1){ nen = "元"; } //日付生成 var result = gen + nen + "年" + mo + "月" + d + "日"; return result; } </script> </head> <body> <input type="button" onclick="test()" value="和暦表示"> </body> </html> |
- (結果例)
- 平成30年06月10日
実行サンプル
ボタンを押すと、今日の日付を和暦で表示します。
解説
- 1868年9月7日以前の日付を指定した場合は正しく表示されません。
- 明治5(1872)年12月2日以前は旧暦ですが、特に考慮はしていません。
- 日付を元号表示するには、toLocaleDateStringを使う方法もあります。
詳しくは、[JavaScript] 日付を和暦で表示する ページをご覧ください。
「本日を和暦表示する」JavaScript(html)の
50行: nen = (y - x.getFullYear())+1; の中の
「x」は「a」のミスプリントではないかと思いますが、
どうでしょうか。
このように修正すると、本日は、令和で表示されます。
(バグ処理の練習用にしてあるのかも知れませんが。)
ご指摘どおりミスプリントでした。
ありがとうございます!
記事を修正させて頂きました。