ツェラーの公式

昨日、Pythonで計算できるようにしたツェラーの公式ですが、そいつをJavaScriptでも計算できるようにしてみました。またDOMを使ってブラウザで開いて確認できるようにもしています。

function get_day(year, month, date) {
    if (month <= 2) {
        month = month + 12;
        year -= 1;
    }
    var J = year.toString();
    J = J.substring(0, 2);
    var K = year % 100;
    var m = month;
    var q = date

    var h = (q + Math.floor(((m + 1) * 26) / 10) + K + Math.floor(K / 4) + Math.floor(J / 4) - (2 * J)) % 7;
    return h;
}

function get_day_result() {
    var year = document.getElementById('YEAR');
    year = Number(year.value);
    var month = document.getElementById('MONTH');
    month = Number(month.value);
    var date = document.getElementById('DATE');
    date = Number(date.value);

    var daynumber = get_day(year, month, date);
    var resulttext = '計算できませんでした。';
    if (! isNaN(daynumber)) {
        var days = {0: '土', 1: '日', 2: '月', 3: '火', 4: '水', 5: '木', 6: '金'};
        resulttext = '答は' + daynumber + '。' + days[daynumber] + '曜日。';
    }
    var result = document.getElementById('RESULT');
    var textnode = document.createTextNode(resulttext);
    result.replaceChild(textnode, result.childNodes[0]);
}

function set_today() {
    var today = new Date();
    var year = document.getElementById('YEAR');
    year.value = today.getFullYear();
    var month = document.getElementById('MONTH');
    month.value = today.getMonth() + 1;
    var date = document.getElementById('DATE');
    date.value = today.getDate();
    get_day_result();
}

このJavaScriptは次のHTMLと組み合わせて利用します。

<p><input id="YEAR" type="text" size="4" /><input id="MONTH" type="text" size="2" /><input id="DATE" type="text" size="2" /><input type="submit" value="計算する" onclick="get_day_result()" /></p>
<p id="RESULT">計算結果</p>
<script>
set_today();
</script>