【问题标题】:How to calculate the difference between actual time and display countdown?如何计算实际时间和显示倒计时之间的差异?
【发布时间】:2014-03-13 06:23:17
【问题描述】:

我想显示两次之间的差异。

第一次是我可以显示的实际时间:

window.setInterval("timefunc()",1000);
    function timefunc(){
        d = new Date ();
        h = (d.getHours () < 10 ? '0' + d.getHours () : d.getHours ());
        m = (d.getMinutes () < 10 ? '0' + d.getMinutes () : d.getMinutes ());
        s = (d.getSeconds () < 10 ? '0' + d.getSeconds () : d.getSeconds ());

        document.getElementById("time").innerHTML = 
        + h + ':' + m + ':' + s;
    }

现在我想扩展这个功能。第二次是每天晚上 8 点。

例如现在是下午 6:30。在这里,我想将剩余时间显示为倒计时。在这种情况下,类似于:“剩余时间:1:29:59”。当时间到了,应该重新加载页面。

我对 Javascript 完全陌生,没有在某处找到任何示例。

如果有人可以帮助我,我将不胜感激。

非常感谢。

【问题讨论】:

  • 嗨,问题是我看不懂代码...如何将今天的日期设置为晚上 8 点?在这样的例子中,它总是会设置一个完整的日期:'var seconds = remaining.getSeconds('16 April, 2014 08:31:23');'我如何将其设置为“今天”时间,就像这样:('dd, yyyy 20:00:00');还是这已经正确?
  • var dt = new Date(yyyy, mm, dd, HH, MM, SS);
  • 那该怎么办?晚上 8 点在哪里?

标签: javascript html function time


【解决方案1】:

您可以使用以下命令创建今天晚上 8:00(20:00)的日期对象:

var d = new Date();
d.setHours(20,0,0,0);

要以毫秒为单位计算两个日期之间的差异,只需从另一个中减去一个即可:

var ms = d - new Date();

转换为 hh:mm:ss:

var hours = ms / 3.6e6 | 0;
var mins  = (ms % 3.6e6) / 6e4 | 0;
var secs  = (ms % 6e4) / 1e3 | 0;

填充单个数字:

function pad(n) {return (n<10? '0':'') + n;}

并格式化输出:

pad(hours) + ':' + pad(mins) + ':' + pad(secs);

也许您希望在晚上 8 点之后倒计时。在这种情况下,只需检查当前日期是否在晚上 8 点之后。如果是,只需在 8 pm 日期对象的日期上加一即可:

var d = new Date();
d.setHours(20,0,0,0);
var now = new Date();

if (d < now) d.setDate(d.getDate() + 1);

所以如果 now 是在晚上 8 点(20:00)之后,d 是明天晚上 8 点。

【讨论】:

  • 你好,这似乎回答了我的问题。我不想在晚上 8 点之后打勾。应该有一个页面重新加载。感谢到目前为止。
  • 它不显示时间 :( 我添加了 'document.getElementById("left").innerHTML = + pad(hours) + ':' + pad(mins) + ':' + pad (secs);' 和一个跨度到正文中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 2021-08-26
相关资源
最近更新 更多