Php jQuery倒计时服务器同步15小时差
我在用基思·伍兹倒计时(http://keith-wood.name/countdown.html)使用服务器同步功能。这在一个国家似乎效果很好,但当我检查来自另一个国家的倒计时时,似乎相差15小时 因此,在澳大利亚,倒计时显示为1天,但在美国,倒计时显示为1天15小时。我已经完全按照网站上的解释实现了服务器端代码,但仍然存在时差。如果我更改了本地时钟,它会更改倒计时时间,但当点击刷新时,倒计时会显示正确的时间量,因此我知道它会获取服务器时间。然而,在美国仍然存在时差 如果读取服务器时间,你知道为什么会出现这种情况吗Php jQuery倒计时服务器同步15小时差,php,jquery,Php,Jquery,我在用基思·伍兹倒计时(http://keith-wood.name/countdown.html)使用服务器同步功能。这在一个国家似乎效果很好,但当我检查来自另一个国家的倒计时时,似乎相差15小时 因此,在澳大利亚,倒计时显示为1天,但在美国,倒计时显示为1天15小时。我已经完全按照网站上的解释实现了服务器端代码,但仍然存在时差。如果我更改了本地时钟,它会更改倒计时时间,但当点击刷新时,倒计时会显示正确的时间量,因此我知道它会获取服务器时间。然而,在美国仍然存在时差 如果读取服务器时间,你知道
function serverTime() {
var time = null;
$.ajax({url: 'server-time.php?random=' + Math.floor(Math.random() * 1000000),
async: false,
dataType: 'text',
success: function(text) {
time = new Date(text);
}, error: function(http, message, exc) {
time = new Date();
}});
return time;
}
var launchDate = "";
$(function () {
launchDate = new Date(
2012,
5-1,
22,
11
);
$('#launchCountdown').countdown('destroy')
$('#launchCountdown').countdown({
until: launchDate,
serverSync: serverTime,
format: 'DHMS',
expiryText: '<p>It\'s all over</p>'
//onTick: highlightLast5
});
});
函数serverTime(){
var-time=null;
$.ajax({url:'server time.php?random='+Math.floor(Math.random()*1000000),
async:false,
数据类型:“文本”,
成功:函数(文本){
时间=新日期(文本);
},错误:函数(http、消息、exc){
时间=新日期();
}});
返回时间;
}
var launchDate=“”;
$(函数(){
launchDate=新日期(
2012,
5-1,
22,
11
);
$(“#启动倒计时”)。倒计时(“销毁”)
$(“#启动倒计时”)。倒计时({
至:发射日期,
serverSync:serverTime,
格式:“DHMS”,
expiryText:“一切都结束了”
//onTick:highlightLast5
});
});
你必须自己处理时区问题。倒计时将自动应用这些设置:
此日期和时间应考虑到服务器的时区,并且在开始或更改倒计时时,该时间与客户端时间之间的任何差异都将应用于倒计时
因此,由于脚本是基于客户端的设置加载的,因此会考虑客户端的时区
编辑更多内容:
在不知道确切代码的情况下,我无法确定,但您应该将其设置为GMT,然后偏移到服务器时间一次,而不是将其设置为服务器时间,这样可以解决自动偏移到每个时区的问题,这是您不想要的。因此,在以下情况下使用:
非常感谢。我以前从未使用过UTCDate,所以我不知道这是什么。
$(selector).countdown({
until: new Date(2012, 8 - 1, 8)}); // add a date object with a timezone
$(selector).countdown({
// create the offset based on your server timezone (e.g Sydney)
// this overrides servertime with a static value that you want
until: $.countdown.UTCDate(+10, 2012, 1 - 1, 26), timezone: +10});
$(selector).countdown({until: '+1m -1d'}); // set it to one one day from now