如何在javascript中使用服务器端倒计时?
我目前正在一个webview上构建这个计时器,在这个webview中,计时器将自动使用javascript更新,并且计时器将每秒递减 当前的问题是,当用户让手机进入睡眠状态时,计时器不会相应地更新,倒计时也会有点中断,因此我希望通过服务器端更新计时器,而不是依赖于一个功能,如果用户让手机进入睡眠状态,计时器就会中断。这是我的当前代码如何在javascript中使用服务器端倒计时?,javascript,php,time,timer,Javascript,Php,Time,Timer,我目前正在一个webview上构建这个计时器,在这个webview中,计时器将自动使用javascript更新,并且计时器将每秒递减 当前的问题是,当用户让手机进入睡眠状态时,计时器不会相应地更新,倒计时也会有点中断,因此我希望通过服务器端更新计时器,而不是依赖于一个功能,如果用户让手机进入睡眠状态,计时器就会中断。这是我的当前代码 <h2 id="timer"> 1:00 <h2> <script> var countdown = new D
<h2 id="timer">
1:00
<h2>
<script>
var countdown = new Date("<?php echo $row['end_timer'] ?>").getTime();
var now = new Date("<?php echo date('Y-m-d H:i:s') ?>")
var x = setInterval(function() {
// Increase the distance by 1
now.setSeconds(now.getSeconds() +
var distance = countdown - (now.getTime());
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById("timer").innerHTML = (seconds < 10 ? '0' : '') + seconds;
if (distance < 0) {
clearInterval(x);
document.getElementById("timer").innerHTML = "00";
location.reload();
}
}, 1000);
</script>
1:00
var countdown=新日期(“”.getTime();
var now=新日期(“”)
var x=setInterval(函数(){
//将距离增加1
now.setSeconds(now.getSeconds()+
var distance=countdown-(now.getTime());
var秒=数学楼层((距离%(1000*60))/1000);
document.getElementById(“计时器”).innerHTML=(秒<10?'0':'')+(秒);
如果(距离<0){
净间隔(x);
document.getElementById(“计时器”).innerHTML=“00”;
location.reload();
}
}, 1000);
我可以想出三种方法与服务器同步倒计时
now
变量中。但这不起作用,因为如果手机处于睡眠状态,setInterval
不会在指定的时间间隔内(在您的情况下为1000毫秒)调用其回调。因此,您将1秒添加到now
中,尽管时间已超过1秒。
var countdown=new Date(Date.now()+30*1000)//从现在开始,30秒后将结束倒计时
var cdElem=document.getElementById(“coutdown”);
函数displayCountdown(){
//倒数计时结束前的时间(毫秒)
var deltaTime=countdown.getTime()-Date.now();
if(deltaTime<0){
clearInterval(有效期间)
deltaTime=0;
}
cdElem.innerText=Math.round(deltaTime/1000);
}
var intervalId=设置间隔(显示倒计时,1000);
displayCountdown()
您可以这样做,但不应该使用PHP。PHP设计为在短时间(毫秒)内运行一次。可以让PHP运行几分钟,但它有很多问题。Node.js更适合此类任务。或者,您可以重写js代码,使其在手机进入睡眠状态时仍能工作。在手机唤醒后,使用单个ajax调用重新与服务器同步?如何与ajax调用重新同步?谢谢回答!我现在的问题是如何将其设置为某个时区。由于服务器端是UTC,我需要将javascript更改为UTC时间,对吗?如果您这样构造日期,可以指定时区偏移量:new date('1975年8月19日23:15:30 GMT-02:00');
或者您可以使用方法.getTimezoneOffset()
并做一些计算如果有轻微偏移,您如何将javascript时间与服务器时间同步?您可以使用PHP中的舍入(microtime(true)*1000)
和JS中的Date.now()。