2013-02-19 50 views
-2

我遇到了一些自定义脚本的问题,我写了这些脚本来显示世界各地不同时区的时间。而不是说HH:MM,如果分钟数小于10,则表示HH:M。我该如何改变它,以便如果它小于10,那么HH:0M?显示当前时间的脚本显示12:5而不是12:05

截图:

脚本:

$(document).ready(function() { 
    function calculateTime(offset) { 
     var currentDate = new Date() 
     utc = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000); 
     newDate = new Date(utc + (3600000*offset)); 
     return (newDate.getHours() === 0) ? 12 : ((newDate.getHours() > 12) ? newDate.getHours() - 12 : newDate.getHours()) + ' : ' + newDate.getMinutes() + ' ' + ((newDate.getHours() > 11) ? 'PM' : 'AM'); 
    } 
    function displayTimes() { 
     $(".chicago").html(calculateTime("-6")); 
     $(".london").html(calculateTime("+1")); 
     $(".shanghai").html(calculateTime("+8")); 
    }; 
    displayTimes(); 
    window.setInterval(displayTimes, 5000); 
}); 

HTML:

<table> 
    <tr> 
     <td><strong>Chicago</strong></td> 
     <td align="right" class="time chicago">12:00PM</td> 
    </tr> 
    <tr> 
     <td><strong>London</strong></td> 
     <td align="right" class="time london">12:00PM</td> 
    </tr> 
    <tr class="last"> 
     <td><strong>Shanghai</strong></td> 
     <td align="right" class="time shanghai">12:00PM</td> 
    </tr> 
</table> 
+0

我不知道这里开始。 – JacobTheDev 2013-02-19 14:14:49

+1

可能重复[getMinutes()0-9 - 如何与两个数字?](http://stackoverflow.com/questions/8935414/getminutes-0-9-how-to-with-two-numbers) – koopajah 2013-02-19 14:18:02

回答

1

Date.getMinutes()返回介于0和59所以你需要检查,如果一个号码的功能你有不到10分钟,如果是这样,添加一个lea丁0。事情是这样的:

var minutes = newDate.getMinutes(); 
if(minutes < 10) { 
    minutes = '0' + minutes; 
} 
return (newDate.getHours() === 0) ? 12 : ((newDate.getHours() > 12) ? newDate.getHours() - 12 : newDate.getHours()) + ' : ' + minutes + ' ' + ((newDate.getHours() > 11) ? 'PM' : 'AM'); 

随着你的整个代码:

$(document).ready(function() { 
    function calculateTime(offset) { 
     var currentDate = new Date() 
     utc = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000); 
     newDate = new Date(utc + (3600000*offset)); 
     var minutes = newDate.getMinutes(); 
     if(minutes < 10) { 
      minutes = '0' + minutes; 
     } 
     return (newDate.getHours() === 0) ? 12 : ((newDate.getHours() > 12) ? newDate.getHours() - 12 : newDate.getHours()) + ' : ' + minutes + ' ' + ((newDate.getHours() > 11) ? 'PM' : 'AM'); 
    } 
    function displayTimes() { 
     $(".chicago").html(calculateTime("-6")); 
     $(".london").html(calculateTime("+1")); 
     $(".shanghai").html(calculateTime("+8")); 
    }; 
    displayTimes(); 
    window.setInterval(displayTimes, 5000); 
}); 
0

尝试零填充数字。

function zeroFill(number, width) { 
    width -= number.toString().length; 
    if (width > 0) { 
     return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') + number; 
    } 
    return number + ""; // always return a string 
} 


return (newDate.getHours() === 0) ? 12 : ((newDate.getHours() > 12) ? zeroFill(newDate.getHours() - 12, 2) : zeroFill(newDate.getHours(), 2)) + ' : ' + zeroFill(newDate.getMinutes(),2) + ' ' + ((newDate.getHours() > 11) ? 'PM' : 'AM'); 
0

尝试像下面这将工作...

(newDate.getMinutes() < 10 ? "0" : "") + newDate.getMinutes() 

在代码中添加此:

return (newDate.getHours() === 0) ? 12 : ((newDate.getHours() > 12) ? newDate.getHours() - 12 : newDate.getHours()) + ' : ' + (newDate.getMinutes() < 10 ? "0" : "") + newDate.getMinutes() + ' ' + ((newDate.getHours() > 11) ? 'PM' : 'AM'); 
0

从函数本身抽象,你可以检查分钟数少如果你喜欢,你可以使用三元运算符进行内联。否则,您可能想要检查已回答的类似问题:jQuery Format Time

1

这称为零填充。基本上你的数值转换为字符串,并在前面加上一个"0"字符只有当其小于10

function zeroPad(num) { 
    if (num<10) { 
     return "0"+num; 
    } else { 
     return num.toString(); 
    } 
} 

用法:

zeroPad(newDate.getMinutes()) // returns strings "05", or "15", or "01" etc.