首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数到多个时刻,怎么算?

问数到多个时刻,怎么算?
EN

Stack Overflow用户
提问于 2013-07-11 11:07:52
回答 2查看 150关注 0票数 1

我正在为有圣诞灯光表演的邻居创建一个网站。

演出每年从12月6日到1月1日,每晚两次:下午6时30分和晚上8时

我们想在网站上加上一个倒计时,上面写着:

下次节目:00:00 (hh:mm:ss)

但我该怎么做呢。当我在网上搜索它时,每个人都说我必须使用API来倒计时。

但是他们只是用一次约会来计算,所以我想我必须自己用JavaScript写一次。

有人能帮忙吗?

我想我必须使用许多if/else语句,从“月1,12还是别的什么吗?”开始,然后是“现在是18.30吗?”(我想要24小时)和“已经是20点了”等等。

但有没有更好的方法,因为这在我看来是很多工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-11 11:19:02

JavaScript有一个内置的date对象,使得处理日期和时间的手动操作少一点:

如果不向其构造函数提供参数,它将给出当前日期(根据最终用户的计算机):

代码语言:javascript
复制
var now = new Date();

您可以通过提供年份、月份(从1月起为零索引)、日以及可选的小时、分钟和秒,将其设置为特定日期:

代码语言:javascript
复制
var now = new Date();
var first_show = new Date(now.getFullYear(), 11, 6, 18, 30);

您可以在这些date对象上使用更大、更少的比较来检查某个日期是在另一个日期之后还是之前:

代码语言:javascript
复制
var now = new Date();
var first_show = new Date(now.getFullYear(), 11, 6, 18, 30);
alert(now < first_show);// Alerts true (at date of writing)

所以,你可以:

  1. 为当前日期创建日期对象,今年的每个显示(以及明年的1月1日显示)
  2. 按时间顺序循环显示日期,以及
  3. 使用比当前日期更大的第一个日期作为倒计时的基础。

注意:您应该使用服务器端来设置具有精确参数的now,而不是仅仅依赖于new Date(),因为如果最终用户的计算机被设置为错误的时间,它会给出错误的结果。

票数 3
EN

Stack Overflow用户

发布于 2013-07-11 11:42:49

下面是一个启动now() 4个小时的示例:

代码语言:javascript
复制
<script type="text/javascript">
var limit = new Date(), element, interval;
limit.setHours(limit.getHours() + 4);
window.onload = function() {
    element = document.getElementById("countdown");
    interval = setInterval(function() {
        var now = new Date();
        if (now.getTime() >= limit.getTime()) {
            clearInterval(interval);
            return;
        }
        var diff = limit.getTime() - now.getTime();
        var hours = parseInt(diff / (60 * 60 * 1000));
        diff = diff % (60 * 60 * 1000);
        minutes = parseInt(diff / (60 * 1000));
        diff = diff % (60 * 1000);
        seconds = parseInt(diff / 1000);
        if (hours < 10) {
            hours = "0" + hours;
        }
        if (minutes < 10) {
            minutes = "0" + minutes;
        }
        if (seconds < 10) {
            seconds = "0" + seconds;
        }
        miliseconds = diff % 1000;
        miliseconds = miliseconds.toString().substring(0, 2);
        element.innerHTML = hours + ":" + minutes + ":" + seconds + ":" + miliseconds;
    }, 10);
}

​

看它的实况这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17591780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档