2013-08-06 45 views
0

我的意思是有两个时钟,一个用于24小时的格式,另一种是12小时格式,jQuery的时钟12/24小时一起

function updateClock() { 
    var currentTime = new Date(); 
    var currentHoursAP = currentTime.getHours(); 
    var currentHours = currentTime.getHours(); 
    var currentMinutes = currentTime.getMinutes(); 
    var currentSeconds = currentTime.getSeconds(); 

    // Pad the minutes and seconds with leading zeros, if required 
    currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes; 
    currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds; 

    // Choose either "AM" or "PM" as appropriate 
    var timeOfDay = (currentHours < 12) ? "AM" : "PM"; 

    // Convert the hours component to 12-hour format if needed 
    currentHoursAP = (currentHours > 12) ? currentHours - 12 : currentHours; 

    // Convert an hours component of "0" to "12" 
    currentHoursAP = (currentHours == 0) ? 12 : currentHours; 

    // Compose the string for display 
    var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds + " " + "/" + currentHoursAP + ":" + currentMinutes + ":" + currentSeconds + " " + timeOfDay; 

    $("#clock").html(currentTimeString); 
} 

$(document).ready(function() { 
    setInterval(updateClock, 1000); 
}); 

,但最终到currentHourscurrentHoursAP和成为完全相同的值。
我错过了什么?

+0

用调试程序遍历代码并找出自己的代码。 –

+1

谢谢...:D –

回答

2

问题是

// Convert an hours component of "0" to "12" 
currentHoursAP = (currentHoursAP == 0) ? 12 : currentHoursAP; 

如果currentHoursAP != 0然后,而不是设置回currentHoursAP值你回来将它设置为currentHours

演示:Fiddle

+0

非常感谢你:) –

1

getHours是从零开始的(0 = 12 AM, 23 = 11 PM ),所以你需要调整检查:

currentHoursAP = (currentHours >= 12) ? currentHours - 12 : currentHours; 
currentHoursAP = (currentHoursAP == 0) ? 12 : currentHoursAP; 
+0

非常感谢你,这是问题:) –