[英]Display time in 12 hr format
Hi The code below is giving me the current time but in 24ht format however I want to display time in 12 hr format and below is the code i am using.嗨,下面的代码给了我当前时间,但以 24ht 格式显示,但是我想以 12 小时格式显示时间,下面是我正在使用的代码。 please suggest how can i do?
请建议我该怎么做? I have tried many codes but not able to do.
我尝试了很多代码,但无法做到。
<div id="timedate">
<a id="mon">January</a>
<a id="d">1</a>,
<a id="y">0</a><br />
<a id="h">12</a>:
<a id="m">00</a>:
<a id="s">00</a>
<a id="mi">000</a>
</div>
<script>
// START CLOCK SCRIPT
Number.prototype.pad = function(n) {
for (var r = this.toString(); r.length < n; r = 0 + r);
return r;
};
function updateClock() {
var now = new Date();
var milli = now.getMilliseconds(),
sec = now.getSeconds(),
min = now.getMinutes(),
hou = now.getHours(),
mo = now.getMonth(),
dy = now.getDate(),
yr = now.getFullYear();
var months = ["January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"];
var tags = ["mon", "d", "y", "h", "m", "s", "mi"],
corr = [months[mo], dy, yr, hou.pad(2), min.pad(2), sec.pad(2), milli];
for (var i = 0; i < tags.length; i++)
document.getElementById(tags[i]).firstChild.nodeValue = corr[i];
}
if (hou == 0) {
hou = 12;
}
if (hou > 12) {
hou = h - 12; }
function initClock() {
updateClock();
window.setInterval("updateClock()", 100);
}
// END CLOCK SCRIPT
</script>
You're overwriting the value of hou
too late: when you arrive at that part of your code, you've already past the for loop where you write the value to the DOM.您覆盖
hou
的值太晚了:当您到达代码的那部分时,您已经通过了将值写入 DOM 的 for 循环。 Simply move it upwards will fix the issue:只需将其向上移动即可解决问题:
// Overwrite hou if necessary
if (hou == 0) {
hou = 12;
} else if (hou > 12) {
hou -= 12;
}
// When done, write everything to DOM
var tags = ["mon", "d", "y", "h", "m", "s", "mi"],
corr = [months[mo], dy, yr, hou.pad(2), min.pad(2), sec.pad(2), milli];
for (var i = 0; i < tags.length; i++)
document.getElementById(tags[i]).firstChild.nodeValue = corr[i];
}
OP asks to implement the am/pm detection. OP 要求实施 am/pm 检测。 This is as simple as simply checking if
hou
is <12 or >=12 before we overwrite it:这就像在我们覆盖之前检查
hou
是否 <12 或 >=12 一样简单:
// Determine if it's ante/post-meridiem (am/pm)
var meridiem = hou < 12 ? 'am' : 'pm';
// Then write it to an element somewhere...
if (hou == 0) {
hou = 12;
} else if (hou > 12) {
hou -= 12;
}
See proof-of-concept:请参阅概念验证:
Number.prototype.pad = function(n) { for (var r = this.toString(); r.length < n; r = 0 + r); return r; }; function updateClock() { var now = new Date(); var milli = now.getMilliseconds(), sec = now.getSeconds(), min = now.getMinutes(), hou = now.getHours(), mo = now.getMonth(), dy = now.getDate(), yr = now.getFullYear(); var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; document.getElementById('meridiem').innerText = hou < 12? 'am': 'pm'; if (hou == 0) { hou = 12; } else if (hou > 12) { hou -= 12; } var tags = ["mon", "d", "y", "h", "m", "s", "mi"], corr = [months[mo], dy, yr, hou.pad(2), min.pad(2), sec.pad(2), milli]; for (var i = 0; i < tags.length; i++) document.getElementById(tags[i]).firstChild.nodeValue = corr[i]; } function initClock() { updateClock(); window.setInterval("updateClock()", 100); } initClock();
<div id="timedate"> <span id="mon">January</span> <span id="d">1</span>, <span id="y">0</span><br /> <span id="h">12</span>: <span id="m">00</span>: <span id="s">00</span> <span id="mi">000</span> <span id="meridiem">am</span> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.