我正在为有圣诞灯光表演的邻居创建一个网站。
演出每年从12月6日到1月1日,每晚两次:下午6时30分和晚上8时
我们想在网站上加上一个倒计时,上面写着:
下次节目:00:00 (hh:mm:ss)
但我该怎么做呢。当我在网上搜索它时,每个人都说我必须使用API来倒计时。
但是他们只是用一次约会来计算,所以我想我必须自己用JavaScript写一次。
有人能帮忙吗?
我想我必须使用许多if/else语句,从“月1,12还是别的什么吗?”开始,然后是“现在是18.30吗?”(我想要24小时)和“已经是20点了”等等。
但有没有更好的方法,因为这在我看来是很多工作。
发布于 2013-07-11 11:19:02
JavaScript有一个内置的date对象,使得处理日期和时间的手动操作少一点:
如果不向其构造函数提供参数,它将给出当前日期(根据最终用户的计算机):
var now = new Date();您可以通过提供年份、月份(从1月起为零索引)、日以及可选的小时、分钟和秒,将其设置为特定日期:
var now = new Date();
var first_show = new Date(now.getFullYear(), 11, 6, 18, 30);您可以在这些date对象上使用更大、更少的比较来检查某个日期是在另一个日期之后还是之前:
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)所以,你可以:
注意:您应该使用服务器端来设置具有精确参数的now,而不是仅仅依赖于new Date(),因为如果最终用户的计算机被设置为错误的时间,它会给出错误的结果。
发布于 2013-07-11 11:42:49
下面是一个启动now() 4个小时的示例:
<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);
}
看它的实况这里
https://stackoverflow.com/questions/17591780
复制相似问题