0

我在这里使用倒计时http://keith-wood.name/countdown.html并且我已经添加了服务器时间和所有内容,但是现在有了夏令时,我的应用程序在http://www的所有倒计时时间上增加了一个小时。 artfido.com

我尝试将服务器时间更改为不使用夏令时更新,但我的倒计时仍然增加了一个小时。

UTC 时间为 +10,但不知道如何更改为没有额外的小时。

代码示例

server-time.php  
<?php 
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Fri, 1 Jan 2010 00:00:00 GMT"); // Date in the past 
header("Content-Type: text/plain; charset=utf-8"); // MIME type 
$now = new DateTime();
echo $now->format("M j, Y H:i:s O")."\n";
?>

Countdown script
$('#defaultCountdown').countdown({
until: endAuction,
serverSync: serverTime,
timezone: +10,
format: 'DHMS',...

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; 
}
4

1 回答 1

0

您以这种方式使用了代码:

function serverTime() {
    var time = null;
    $.ajax({url: 'cgi/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;
}

此函数不返回任何内容,因为 AJAX 调用是异步的。一种好方法是在成功函数中进行。我的意思是定时器的初始化。

因为,当你调用这个serverTime()函数时,它总是返回null. 它不是即时的。做一件事。调用一个函数,startTimer(time)并将time变量中的服务器时间传递给startTimer()函数内部,定义如下:

function startTimer(time)
{
    var endAuction = "";
    $(function () {
        endAuction = new Date(
            2012,
            10,
            08,
            12,
            24,
            26                                                                );
        $('#defaultCountdown8077').countdown('destroy')
        $('#defaultCountdown8077').countdown({
            until: endAuction,
            serverSync: time,
            timezone: +10,
            format: 'DHMS',
            expiryUrl: 'http://www.artfido.com'
        });
    });
}

另外,serverTime();您在中间的某个地方打电话,绝不会有用。

您的 JavaScript 代码将是:

function initTimer() {
    var time = null;
    $.ajax({url: 'cgi/server-time.php?random=' + Math.floor(Math.random() * 1000000),
        async: false, dataType: 'text',
        success: function(text) {
            time = new Date(text);
            startTimer(time);
        }
    });
}
于 2012-10-09T04:27:00.260 回答