我遇到了一些问题,我写了一些自定义脚本来显示世界各地不同时区的时间。不是说HH:MM,如果分钟数小于10,它就说HH:M。如何改变它,如果它小于10,那么它是HH:0M?
截图:
脚本:
$(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 :(得分:1)
函数Date.getMinutes()返回一个0到59之间的数字。所以你需要检查你是否有不到10分钟,如果有的话,添加一个前导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);
});
答案 1 :(得分:1)
这称为零填充。基本上,您将数值转换为字符串,并且只有在小于10时才添加"0"
字符。
function zeroPad(num) {
if ( num<10 ) {
return "0"+num;
} else {
return num.toString();
}
}
用法:
zeroPad(newDate.getMinutes()) // returns strings "05", or "15", or "01" etc.
答案 2 :(得分: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');
答案 3 :(得分: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');
答案 4 :(得分:0)
从函数本身抽象,您可以检查分钟数是否小于10,填充结果为0.如果您愿意,可以使用三元运算符进行内联运算。否则,您可能需要检查已回答的类似问题:jQuery Format Time