【问题标题】:Javascript time function not displaying correctlyJavascript 时间函数显示不正确
【发布时间】:2017-08-11 17:00:32
【问题描述】:

我有一个功能可以延迟两分钟显示来自 javascript 的时间。唯一的问题是,例如,当时间为下午 2:00 时,函数显示 2:0-2pm 而不是 1:58pm。

下面是代码:

    function startTime() {
    var today = new Date();
    var h = today.getHours();
    var m = eval(today.getMinutes()-2); // needs eval function
    var s = today.getSeconds();
    m = checkTime(m);
    s = checkTime(s);
    var time = h>=12?" PM":" AM" // am or pm
    h = h % 12;
    h = h ? h : 12; // the hour '0' should be '12'
    m = m < 10 ? ''+m : m;
    
    document.getElementById('txt').innerHTML =
    "Time: " + h + ":" + m + ":" + s + time;
    var t = setTimeout(startTime, 500);
    
    }
    function checkTime(i) {
    if (i < 10) {i =  "0" + i}; // add zero in front of numbers < 10
    return i;
    }
    
    <body onload="startTime()">
    <div id="txt"></div>

【问题讨论】:

  • 为什么不使用moment.js
  • 不,你不需要需要eval函数。
  • 您的i = "0" + i 函数没有按照您的想法执行。使用i.toString()。并使用textContent 而不是innerHTML
  • @Dai 我做了这些更改,但时间显示缺少零。如果时间是下午 5:05,您的更正会使时间显示为下午 5:3。
  • @Vinny 你从哪里得到这 2 分钟的延迟?检查您计算机的时区偏移量(您可能不小心将时区偏移量设置为 2 分钟,而不是每小时增量)。你的实际系统时钟是多少?

标签: javascript html date time


【解决方案1】:

您的问题是您在减去 2 分钟时没有考虑到您在处理时间,而不仅仅是数字。此外,您的功能可以更加简洁。

一个简单的解决方案是在格式化之前从日期中减去 2 分钟。这也将调整时间并允许在观察到的地方进行夏令时。转换时间为 02:00 并进入夏令时,03:00 前 2 分钟为 01:58。夏令时结束时也是如此。

考虑:

function get2MinsAgo() {
  function z(n){return (n<10? '0' : '') + n}
  var d = new Date();
  d.setMinutes(d.getMinutes() - 2);
  return (d.getHours() % 12 || 12) + ':' +
         z(d.getMinutes()) + ':' +
         z(d.getSeconds()) + ' ' +
         (d.getHours() < 12? 'AM' : 'PM');
}

function showTime(){
  // Run just after next full second
  var lag = 1020 - new Date()%1000;
  document.getElementById('timeText').textContent = get2MinsAgo();
  setTimeout(showTime, lag);
}

showTime()
&lt;div&gt;Two minutes ago was &lt;span id="timeText"&gt;&lt;/span&gt;&lt;/div&gt;

【讨论】:

    【解决方案2】:

    我怀疑这是因为在下午 2:00 或整点的任何时间,“getMinutes()”函数将返回 00 分钟。因此,当您从中减去 2 时,它会将自身设置为 -2 而不是 58。

    【讨论】:

    • 您已经确定了问题,但有解决办法吗? ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多