用 PHP 显示时钟

show clock with php

本文关键字:时钟 显示 PHP      更新时间:2023-09-26

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

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

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

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

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

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

然后javascript时钟应该与客户端中的服务器时间保持同步

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

通过 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()替换为startTime中的newDate() + timeDiff。在服务器端,这很简单,time.php

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

没有检查,所以可能有错误。警告空洞。

H3NR1X的解决方案也可以工作,但这样你就不必担心不同步了。

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

设置服务器时区

date_default_timezone_set('America/Los_Angeles');

将显示 17:16:18

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

请参阅 date_default_timezone_set() 和 date() 了解配置选项。

你可以

用AJAX做到这一点。有一个 php 页面,它回显当前时间并每秒更新一次,或者使用 ajax 进行任何更新。