我想在我的网页上显示服务器时间。我用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>
答案 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更新。