4

Stackoverflow のようなコメント システムを作ろうとしています。私が直面している問題は、PHP を実行しているサーバーと MySQL データベースが通常とは異なるタイム ゾーンに時刻を格納している場合に、ユーザーのローカル時間 (つまり、2 時間前) でのコメントの時刻をユーザーに表示する方法です。ユーザー。

サーバーで現地時間を維持するには、次のようなコードを使用する必要があることを理解しています (世界中のどこにいてもヨーロッパ/チューリッヒを交換します)。

$myTimezone='Europe/Zurich'; date_default_timezone_set($myTimezone);

$myTimezoneまた、次のような方法でJavascriptを使用してローカル時間を取得する必要があるサーバーにローカルを送信することも理解しています(ここから適応):

 var localDate = new Date(),
 offset= -localDate.getTimezoneOffset()/60; //can send this 'offset' variable via $.ajax to the server

私の質問はdate_default_timezone_set($myTimezone);、時間を吐き出す PHP スクリプトのすべてに書き込む代わりに (最終的には、コメント システムのためだけでなく、より多くの場所で)、何らかの方法でサーバーのローカルタイムをグローバルに設定することは可能ですか?

4

1 に答える 1

3

php を使用して time() - エポック [1970 年 1 月 1 日] からの秒数 - 関数を介してすべての作業を行います。このようにして、すべてのユーザーの時間がサーバーと同期されます。

次に、この時間をユーザーに送信し、そこから JavaScript でフォーマットします。

var dt = new Date(time_returned_from_php * 1000); //Multiplied by 1000 since javascript uses milliseconds

次に、javascripts .toLocalString() を使用して、ユーザーの形式をローカルに設定できます。

質問に答えるために、私はサーバーに現地時間を保持していません。クライアントとサーバーの時刻は同期されていません。PHP が処理を行い、次に JS が入って現地時間に修正します。

おもしろいことに、この非常に優れたJS プラグインである timeagoを使用して、おなじみの Stackoverflow/Facebook スタイル (2 時間前...、数秒前など) を使用して時刻をフォーマットできます。

于 2012-11-28T23:12:44.903 に答える