简体   繁体   English

以 12 小时格式显示时间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM