如何在JQuery时间倒计时设置固定时间(这不会影响页面刷新时间)?

时间:2014-03-06 04:39:10

标签: javascript jquery

我在我的网络应用中使用this jquery plugin来计算时间。请帮助我保持倒数时间不是每次都开始。我想设定一个月的续约(30天24小时60分60秒)。所以每次刷新倒计时都不应该开始从一开始 .Thnx

这是设置时间的脚本代码

$('#counter').countdown({
    timestamp : (new Date()).getTime() + 30*24*60*60*1000
});

4 个答案:

答案 0 :(得分:2)

每个人都需要相同的结束时间吗?例如,如果您想在2014年3月5日东部时间下午5点启动您的网站,那么您希望设置启动时间如下:

var ts = new Date(Date.UTC(2014, 2, 7, 22))
$('#counter').countdown({
    timestamp : ts
});

或者,如果每个用户都需要查看唯一的倒计时,那么您希望将时间保留在cookie中。例如,如果我在打开页面后5分钟打开页面。计时器应该相隔5分钟吗?如果是,则使用cookie。如果没有,我们的两个计时器应该相同,那么将所需的结束日期传递给计数器。

注意:如果时区对您很重要,则设置UTC。

答案 1 :(得分:1)

如果您需要持久性,而不是在javascript中创建新的日期对象,请从后端传递日期,该日期应在您第一次开始倒计时时保存。

答案 2 :(得分:1)

var today = new Date()
var enddate = new Date(2014,05,01) 


function calcDate(date1,date2) {
   var datadiff = Math.abs(date1 - date2) / 1000;

   // calculate (and subtract) whole days
   var days = Math.floor(datadiff / 86400);
   datadiff -= days * 86400;

   // calculate (and subtract) whole hours
   var hours = Math.floor(datadiff / 3600) % 24;
   datadiff -= hours * 3600;

  // calculate (and subtract) whole minutes
  var minutes = Math.floor(datadiff / 60) % 60;
  datadiff -= minutes * 60;

 // what's left is seconds
 var seconds = Math.floor(datadiff % 60);  
 var message = " ";
 message += days + " days " ;
 message += hours + " hours ";
 message += minutes + " minutes \n";
 message += seconds + " seconds \n";
 return message
 }


 a = calcDate(enddate,today);
 alert(a);

答案 3 :(得分:1)

有很多方法可以保留数据。一种方法可能是将日期存储到cookie中。

function getCookie(name) {
  var value = "; " + document.cookie;
  var parts = value.split("; " + name + "=");
  if (parts.length == 2) return parts.pop().split(";").shift();
}

date = getCookie('date');

if(!date) {
    document.cookie="date=" + new Date().getTime() + 30*24*60*60*1000 + ";";
    date = getCookie('date');
}

alert(date);

这应该可以帮助您在浏览器刷新之间保持日期,但只有在Cookie持续时才会有效。