0

我遇到了一个问题,我有一个数字签名并且它接受嵌入的 HTML。我为它创建了一个小部件来显示时钟,我尝试下载一个,但由于某种原因它们从未工作过,所以我自己制作了一个。我遇到的问题是时钟没有显示正确的时间。我明白了,所以数字显示正确,但我现在看到的问题是它将播放 AM 而不是 PM。我会很感激任何帮助,不确定逻辑是否正确,或者我是否使用了错误的条件语句。任何帮助都会很棒,谢谢!

<script type="text/javascript">

function updateTime() {
    var currentTime = new Date();
    var hours = currentTime.getHours();
    var minutes = currentTime.getMinutes();
    var seconds = currentTime.getSeconds();
    var p;
    if (minutes < 10){
        minutes = "0" + minutes;
    }
    if (seconds < 10){
        seconds = "0" + seconds;
    }
    if (hours >= 12){
        p = "PM";   //could not get this in it's own if statement w/o breaking it
        hours = (hours - 12);
    }
    if (hours == 0) {
        hours = (hours + 12);
    }else {
        p = "AM";
    }

    var v = hours + ":" + minutes + ":" + seconds + " " + p;

    setTimeout("updateTime()", 1000);
    document.getElementById('time').innerHTML= v;
}
updateTime();
</script>
<style type="text/css">
#time {
    font-size: 5em;
}
</style>
<div><span id="time"></span></div>
4

2 回答 2

1

将您的 IF 更改为:

if (hours >= 12) {
    p = "PM";
    hours = (hours>12) ? (hours - 12) : 12;
}
else
{
    if (hours == 0)
        hours = 12;
    p = "AM";
}
于 2013-10-21T19:08:11.770 回答
0

您的代码几乎是正确的,您只犯了一个小错误。当您检查 ifhours是否大于时12pis PM else p应该是AM。您可以通过在函数的开头设置p为来解决这个问题,即在检查后立即移动您已经拥有的。AMelse

这个小提琴将演示一个工作示例:http: //jsfiddle.net/s2R9y/

if (hours >= 12) {
    p = "PM";
    hours = (hours - 12);
} else {
    p = "AM";
}

setTimeOut功能也已修复,因此它确实有效:

setTimeout(updateTime, 1000);
于 2013-10-21T19:10:30.810 回答