0

以下は私が取り組んでいるコードです。この Web サイトで見つけた回答の 1 つを読んで、24 時間形式から 12 時間形式の時間に変更しました。唯一の問題は、5 分前の時間は 2:5 で、02:05 を表示したいということです。正確に何を変更すればよいかわかりません。どんな助けでも大歓迎です。ありがとう!

function theClock12hour()
{
    function pad(n) {
        return (n < 10) ? "0" + n : n;
    }

    var time = new Date();
    var nHours = time.getHours();
    var nMins = time.getMinutes();

    if (nHours > 12) {
        nHours -=12;
    } else if (nHourse ===0) {
        hours = 12;
    }
    document.getElementById("hourbox").innerHTML = nHours;
    document.getElementById("minutebox").innerHTML = nMins;

    var nDay = time.getDate();
    document.getElementById("datebox").innerHTML = nDay;

    var nMonth = time.getMonth();
    if      (nMonth ==  0){ nMonth = 'JANUARY'; }
    else if (nMonth ==  1){ nMonth = 'FEBRUARY'; }
    else if (nMonth ==  2){ nMonth = 'MARCH'; }
    else if (nMonth ==  3){ nMonth = 'APRIL'; }
    else if (nMonth ==  4){ nMonth = 'MAY'; }
    else if (nMonth ==  5){ nMonth = 'JUNE'; }
    else if (nMonth ==  6){ nMonth = 'JULY'; }
    else if (nMonth ==  7){ nMonth = 'AUGUST'; }
    else if (nMonth ==  8){ nMonth = 'SEPTEMBER'; }
    else if (nMonth ==  9){ nMonth = 'OCTOBER'; }
    else if (nMonth == 10){ nMonth = 'NOVEMBER'; }
    else if (nMonth == 11){ nMonth = 'DECEMBER'; }

    document.getElementById("monthbox").innerHTML = nMonth;

    var nTday = time.getDay();
    if      (nTday == 0){ nTday='SUN'; }
    else if (nTday == 1){ nTday='MON'; }
    else if (nTday == 2){ nTday='TUE'; }
    else if (nTday == 3){ nTday='WED'; }
    else if (nTday == 4){ nTday='THU'; }
    else if (nTday == 5){ nTday='FRI'; }
    else if (nTday == 6){ nTday='SAT'; }

    document.getElementById("daybox").innerHTML = nTday;

    var nYear = time.getFullYear();
    document.getElementById("yearbox").innerHTML = nYear;

    timer = setTimeout("theClock12hour()",1000);
}
4

1 に答える 1

0

あなたの質問に答えるために

nMins 変数の周囲にある pad 関数を追加すると、コードは希望どおりに動作する可能性があります。

http://jsfiddle.net/queuehammer/T5R5C/

document.getElementById("minutebox").innerHTML = pad(nMins);

また、nHours ロジックの問題に気付きました

if (nHours > 12) {
    nHours -=12;
} else if (nHourse === 0) {
    hours = 12;
}

最初の行は nHours が 12 未満かどうかをチェックし、else if は nHours が 0 に等しいかどうかをチェックします。0 < 12 であるため、nHours を 0 ではなく 12 にする必要がある場合、2 番目の「if」には到達しません。 . 他にもマイナーな更新がいくつかありましたが、ロジックに変更はありません。このコードと更新されたフィドルを参照してください。

if (nHours > 12 && nHours != 0) {
    nHours -=12;
} else if (nHours == 0) {
    nHours = 12;
}

Moment.js に関するコメントに追加するには

また、Moment を使用して例を作成しました。私は自分自身のために他の時間ライブラリを調べましたが、現時点で落ち着いています。

http://jsfiddle.net/queuehammer/HhruW/

//More info at: http://momentjs.com/
document.getElementById("OurText").innerHTML = moment().format('MMMM Do YYYY, h:mm:ss a');
于 2013-04-01T21:38:54.143 に答える