-3

大声笑对不起我不小心发布了它

我是 JavaScript 新手,我正在尝试制作一个简单的倒计时脚本,该脚本应该显示结束日期和今天的服务器日期之间的差异。

这是我正在尝试做的一个很好的例子http://moblog.bradleyit.com/2009/06/javascripting-to-find-difference.html

我唯一要添加的是另一个具有计算秒数的变量。我怎样才能做到这一点?

这是代码:

    var 今天 = 新日期();
     var Christmas = new Date("12-25-2009");
     var diffMs = (圣诞节 - 今天); // 现在和圣诞节之间的毫秒数
     var diffDays = Math.round(diffMs / 86400000); // 天
     var diffHrs = Math.round((diffMs % 86400000) / 3600000); // 小时
     var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // 分钟
     alert(diffDays + " days, " + diffHrs + " hours, " + diffMins + " 离圣诞节 2009 分钟 =)");

4

3 回答 3

2

这段代码有两个问题:

1:您需要使用一个可以跨浏览器接受的日期,因此需要使用 / 而不是 - 进行格式化。

2:你正在四舍五入,四舍五入时会给你不准确的数字。所有数字都需要四舍五入。这是一个这样做的功能:

var roundDown = function(num){
    var full = num.toString();
    var reg = /([\d]+)/i;
    var res = reg.exec(full);
    return res[1];
}

所以你的最终代码应该是这样的:

var roundDown = function(num){
    var full = num.toString();
    var reg = /([\d]+)/i;
    var res = reg.exec(full);
    return res[1];
}

var today = new Date(); // date and time right now
var goLive = new Date("06/01/2013"); // target date
var diffMs = (goLive - today); // milliseconds between now & target date
var diffDays = roundDown(diffMs / 86400000); // days
var diffHrs = roundDown((diffMs % 86400000) / 3600000); // hours
var diffMins = roundDown(((diffMs % 86400000) % 3600000) / 60000); // minutes
var diffSecs = roundDown((((diffMs % 86400000) % 3600000) % 60000) / 1000 ); // seconds
于 2013-03-08T13:40:09.933 回答
0
var endDate = new Date(year, month, day, hours, minutes, seconds, milliseconds);
var today = Date.now()
var timeLeft = endDate - today // timeLeft would be in milliseconds
// Parse this into months, days, hours, ...

将它放在一个函数中,并将其设置为每秒左右使用setInterval.

于 2012-08-21T13:54:34.243 回答
0

这应该让您开始使用 JavaScript 日期对象及其相关方法。 http://www.w3schools.com/jsref/jsref_obj_date.asp

此外,查找 setInterval() 方法,它允许您以设定的时间间隔触发代码(例如,更新倒计时文本)。

于 2012-08-21T13:55:25.467 回答