0

下面是我正在处理的代码。通过阅读我在此网站上找到的答案之一,我将其从 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 为 12 而不是 0 的情况下,将无法达到第二个“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 回答