日本と世界の暦を一致させるアプリ
日付を入力してください:
以下がJavaScriptを使った日本と世界の暦を一致させるアプリの例です。セキュリティ脆弱性の問題がある場合は拒否しました。 ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>日本と世界の暦を一致させるアプリ</title> </head> <body> <h1>日本と世界の暦を一致させるアプリ</h1> <p>日付を入力してください:</p> <input type="date" id="date-input"> <button onclick="convert()">変換する</button> <p id="result"></p> <script> // 日本の元号を西暦に変換して返す関数 function convertToAD(date) { let era = date.substring(0, date.indexOf("年")); let year = Number(date.substring(date.indexOf("年")+1, date.indexOf("年")+3)); let month = Number(date.substring(date.indexOf("年")+4, date.indexOf("月"))); let day = Number(date.substring(date.indexOf("月")+1, date.indexOf("日"))); let gengo = { "明治": 1868, "大正": 1912, "昭和": 1926, "平成": 1989, "令和": 2019 }; let ad = gengo[era] + year; if (era == "明治" && year <= 45) { ad -= 1; } return new Date(ad, month-1, day); } // 世界の西暦を日本の元号に変換して返す関数 function convertToGengo(date) { let era; let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); if (year >= 2019) { era = "令和"; year -= 2018; } else if (year >= 1989) { era = "平成"; year -= 1988; } else if (year >= 1926) { era = "昭和"; year -= 1925; } else if (year >= 1912) { era = "大正"; year -= 1911; } else { era = "明治"; year -= 1867; } return era + year + "年" + month + "月" + day + "日"; } // 変換ボタンが押されたときの処理 function convert() { let dateInput = document.getElementById("date-input").value; let convertedDate = convertToAD(dateInput); let result = "西暦:" + convertedDate.toLocaleDateString() + "<br>"; result += "元号:" + convertToGengo(convertedDate); document.getElementById("result").innerHTML = result; } </script> </body> </html> ``` ジョークとして、アプリが「タイムトラベルできます!」と表示して、西暦と元号を行き来できるようにしたり、「昔はこんなに面倒だったのか…(遠い目)」とコメントを入れたりすることができます。