我是JavaScript的新手,我正在尝试制作一个简单的倒计时脚本,该脚本应该显示结束日期和今天的服务器日期之间的差异。
这是我正在尝试做的一个很好的例子http://moblog.bradleyit.com/2009/06/javascripting-to-find-difference.html
我想要添加的唯一内容是另一个带有计算秒数的变量。我怎么能这样做?
以下是代码:
var today = new Date(); var Christmas = new Date("12-25-2009"); var diffMs = (Christmas - today); // milliseconds between now & Christmas var diffDays = Math.round(diffMs / 86400000); // days var diffHrs = Math.round((diffMs % 86400000) / 3600000); // hours var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes alert(diffDays + " days, " + diffHrs + " hours, " + diffMins + " minutes until Christmas 2009 =)");
答案 0 :(得分:1)
此代码存在两个问题:
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
答案 1 :(得分: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
将其设置为每隔一秒左右调用一次。
答案 2 :(得分:0)
这应该让您开始使用JavaScript日期对象及其相关方法。 http://www.w3schools.com/jsref/jsref_obj_date.asp
此外,查找setInterval()方法,该方法允许您以设置的间隔触发代码(例如,更新倒计时文本)。