2012年10月9日火曜日

西暦→和暦変換

今年だけでなく、特定の西暦から平成何年か調べたい場合、というのは多くないような気がしますが、とりあえず作ってみました。

和暦変換

入力した西暦から対応する和暦を計算して表示します。
その際、明治・大正・昭和・平成を判別します。いろいろあって面倒ですね。

平成:1989~
昭和:1926~1989
大正:1912~1926
明治:1868~1912

ということで、入力された西暦を判定して年号を決めます。
年号がかぶる年がありますが、そこは両方表示するということで対処しました。
本来は月日でどちらの年号になるか判定すると良いのですが、入力が面倒になるのでそこはやめておきました。

判定処理は以下のようにしています。

function wareki() {  var ac = $("memo").value;
  var str = "<br>";
  if (ac > 1989) {
      str = "平成 " + (ac - 1988) + " 年" + "<br>";
  } else if (ac == 1989) {
      str = "平成 " + (ac - 1988) + " 年" + "<br>"
          + "昭和 " + (ac - 1925) + " 年";
  } else if (ac > 1926) {
      str = "昭和 " + (ac - 1925) + " 年" + "<br>";
  } else if (ac == 1926) {
      str = "昭和 " + (ac - 1925) + " 年" + "<br>"
          + "大正 " + (ac - 1911) + " 年";
  } else if (ac > 1912) {
      str = "大正 " + (ac - 1911) + " 年" + "<br>";
  } else if (ac == 1912) {
      str = "大正 " + (ac - 1911) + " 年" + "<br>"
          + "明治 " + (ac - 1867) + " 年";
  } else if (ac > 1867) {
      str = "明治 " + (ac - 1867) + " 年" + "<br>";
  }
  $("info").innerHTML = ac + " 年" + "<br>" + str;
}

明治よりも前は表示しません。

西暦の初期値は、今日の日にちから年を持ってきて入れています。

window.onload = function() {    var t = new Date();
    var yyyy = t.getYear();
    if (yyyy < 2000) { yyyy += 1900; }
    $("memo").value = yyyy;
    wareki();
}

入力用のテキストボックスはidを"memo"として、以下のように作っています。

<input type="text" id="memo">

ボタンは、押された時に関数wareki()を実行するよう記述しています。
<button onClick="wareki()">変換実行</button>

とまあ、こんなところでしょうか。

と、簡単そうに書いていますが、結構苦労してしまいました。
エラーを教えてくれないので何が何やらわからなかったのですが、Chromeにデバッグ機能があることがわかってからはデバッグが楽になりました。

次回は和暦→西暦変換を作りたいと思います。


0 件のコメント:

コメントを投稿