用php显示时钟

时间:2012-05-30 14:39:05

标签: php javascript jquery ajax

我想在我的网页上显示服务器时间。我用javascript代码完成了客户端时间,但是我如何显示服务器时间?

是否有任何zendFramework类都这样做?

我使用下面的javascript代码显示客户时间:

<head>
<script language="javascript" type="text/javascript">
function startTime()
{
        var today=new Date();

        var h=today.getHours();
        var m=today.getMinutes();
        var s=today.getSeconds();

        // add a zero in front of numbers<10
        m=checkTime(m);
        s=checkTime(s);

        document.getElementById("time_section").innerHTML=h+":"+m+":"+s;
        t=setTimeout('startTime()',500);

}

function checkTime(i)
{
        if (i<10)
         {
              i="0" + i;
         }
        return i;
}
</script>

</head>

<body onload="startTime()">
</body>

5 个答案:

答案 0 :(得分:7)

显示服务器时间使用日期函数:

<?php echo date('Y-m-d H:i:s'); ?>

如果你的意思是实时时钟你不能用PHP做到这一点,坚持使用javascript

答案 1 :(得分:3)

修改你的代码,setTimeout函数每分钟只增加客户端的时钟,然后使用php用服务器时间初始化today javascript变量,如下所示:

// time() returns seconds, multiply by 1000 to get millisenconds
var today = new Date(<?php echo time() * 1000?>);  

然后javascript时钟应该继续使用客户端中的服务器时间

或者,您可以通过每隔一定时间(p.e一小时)执行ajax请求来与服务器时间同步

答案 2 :(得分:1)

通过AJAX向服务器询问时间,作为UNIX时间戳(PHP函数time())。到达时,获取与本地时间戳(var timeDiff = new Date() - serverTime * 1000)的差异;修改您不太相关的代码,以显示new Date() + timeDiff而不是new Date()

让我们尝试一些代码:

var timeDiff;
$.ajax('time.php', {      
  success: function(serverTime) {
    timeDiff = new Date() - serverTime * 1000;
    startTime();
  }
});

newDate()替换为newDate() + timeDiff中的startTime。在服务器端,很简单,在time.php

header('Content-Type: text-json');
echo time();

没有检查,所以可能存在错误。注意事项。

h3nr1x的解决方案也可行,但这样您就不必担心会失去同步。

一个小问题是客户端的时间计算都是在本地时区完成的;如果您在与服务器不同的时间跨越DST时间,这将影响您,同时显示的时间不正确。我不知道如何设置JavaScript Date对象的时区,或者甚至可能。 :(

答案 3 :(得分:0)

设置服务器时区

date_default_timezone_set('America/Los_Angeles');

将显示17:16:18

$currentTime = date("H:i:s");

请参阅date_default_timezone_set()date()了解确认选项。

答案 4 :(得分:0)

你可以用AJAX做到这一点。有一个回显当前时间的php页面,每秒更新一次或者用ajax更新。