-7

Web ページにサーバー時間を表示したい。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>
4

5 に答える 5

7

サーバー時間を表示するには、日付関数を使用します。

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

リアルタイム クロックを意味する場合は、php でそれを行うことはできません。そのためには JavaScript を使用してください。

于 2012-05-30T14:41:17.990 に答える
3

コードを変更して、 setTimeout 関数が毎分クライアントのクロックをインクリメントするだけにし、次のtodayように、php を使用してサーバー時間で javascript 変数を初期化します。

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

次に、JavaScript クロックは、クライアントのサーバー時間と一緒に進み続ける必要があります。

オプションで、一定時間ごとに ajax リクエストを実行することで、サーバーの時刻と同期できます (pe per hour)。

于 2012-05-30T14:54:15.833 に答える
1

UNIX タイムスタンプ (PHP 関数 ) として、AJAX によってサーバーに時刻を問い合わせます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 時刻を超える場合に影響し、その間に表示される時刻は不正確になります。DateJavaScript のオブジェクトのタイム ゾーンを設定する方法、またはそれが可能かどうかさえわかりません。:(

于 2012-05-30T14:43:45.697 に答える
0

AJAX でそれを行うことができます。現在の時刻をエコーし​​、毎秒または ajax を使用して更新する php ページを作成します。

于 2012-05-30T14:58:05.633 に答える
0

サーバーのタイムゾーンを設定する

date_default_timezone_set('America/Los_Angeles');

17:16:18 と表示されます

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

設定オプションについては、 date_default_timezone_set()およびdate()を参照してください。

于 2012-05-30T14:44:11.997 に答える