倒数计时器随当地时间而变化

时间:2013-08-26 10:14:12

标签: php jquery-countdown

我有一个游戏网站,我需要在比赛时间之前显示计时器。一旦计时器达到极限,我需要加载游戏。

为此,我使用了jquery countdown。它的工作正常。

我的问题是,当用户更改系统时间(本地时间)时计时器正在运行,剩余时间限制已更改并且游戏已启动。

如何从当地时间开始倒数倒数计时器?请帮我解决问题。

我的代码,

$('#gamewindow').countdown({
        until   : 100,
        layout:'{mn} : {s<}{snn} {s>}',
        onExpiry: function () { 
                $('#gamewindow').load('game.php');         
        },
    });

}); 

<div id="gamewindow"></div>

2 个答案:

答案 0 :(得分:1)

不是通过普通的Javascript初始化计时器(它将返回客户端时间,即客户端计算机上的时间),而应该依赖服务器时间,即服务器上的时间。这将标准化所有玩家的时间。

因此,在访问倒计时页面时,您的Javascript计数器将使用服务器的时间进行初始化。您可以使用AJAX或一些hack-y PHP来执行此操作。对于此任务,启动是JS从服务器获取内容的唯一时间;之后,“倒计时”效应将由JS管理。当然,这不会是超级同步的,但这个错误是非常可以原谅的。即使用户使用不同的本地时区设置刷新,JS也会从服务器时间重新初始化 - 没有问题!

答案 1 :(得分:0)

由于您无法阻止用户更改系统时间,因此解决方案必须是服务器端。

game.php中,检查是否已到达match_start_time,如果没有,请重定向到等待页面(应再次显示倒数计时器)。