是否可以创建一个计时器,我可以手动将每天的小时数设置为设定的小时数但仍保持准确?例如;如果我在下午2点将倒计时设置为5小时,我希望计时器在下午7点到达时立即停止。此外,当我将计时器设置为5小时时,我希望世界上的每个人都能看到它从5个小时倒计时,无论他们国家的时间是多少。格式为:days hours minutes seconds。
我想这样做的原因是一个流光的网站。他需要一个灵活的计时器,可以手动更改,并且他的观众在全世界都知道他何时开始流式传输。
我们目前正在使用的当前计时器;
setInterval(function(){
var currentTime = new Date();
if(currentTime.getHours() > 19){
var countdownHours = (24 - currentTime.getHours()) + 19;
}else if(currentTime.getHours() < 19){
var countdownHours = 19 - currentTime.getHours();
}else{
var countdownHours = 0;
}
var countdownMins = 59 - currentTime.getMinutes();
var countdownSecs = 60 - currentTime.getSeconds();
$('#countdown-days h1').text('0');
$('#countdown-hours h1').text(countdownHours);
$('#countdown-minutes h1').text(countdownMins);
$('#countdown-seconds h1').text(countdownSecs);
}, 1000);
正如你所知道的那样,它并不适合我们所需要的东西,因为它会在你所在的时区内减少到晚上7点。
非常感谢任何帮助/示例,
提前感谢Lixorp。
答案 0 :(得分:0)
您的问题是由设备上具有不同时区的客户造成的。如果您想避免这种情况,您需要从服务器向客户端发送一些时间信息。
步骤1 :(服务器)计算计时器到期的时间并将其发送到客户端
步骤2 :(客户端)根据用户时区计算该时间发生的时间。
步骤3.(客户端)根据步骤2中的计算启动计时器。
对于您的客户端javascript(以及服务器,如果您使用的是node.js),moment.js库非常适合以简单的方式进行日期数学运算(参见durations)
client.js
// you could hardcode date or send it from server
var now = moment(),
deadline = moment('12-25-2014', 'MM-DD-YYYY'),
secondsUntilDeadline = now.diff(deadline, 'seconds');
答案 1 :(得分:0)
最好的一天是做倒计时服务器端并将结果发送给客户端。您将不得不使用服务器端语言,如PHP或Ruby。您还可以使用Node.js在服务器端使用Javascript语法。
祝你好运!