1

正しい時刻を提供する API/方法/サイト/リンクがあるかどうか疑問に思っていましたか?

サーバーの日時やクライアントの日時ではありません。datetime を使用して、ユーザーがプレイする時間になるまでゲーム サイトでカウント ダウンしています。ユーザーは世界中から来ているため、米国からヨーロッパへのクライアント時間の使用は一致しません。

その後、通常はサーバーの時間を使用しますが、どういうわけか1.2時間スキップすることがありますか? 誰もが同じソースからタイムスタンプを作成し、そのソースが常に正しいことを確認したいと思います!

何か案は?

4

2 に答える 2

0

サーバーの時間を使用することは問題ありません。タイムゾーンを正しく取得するようにしてください。

$now = new DateTime;
$now->setTimeZone(new DateTimeZone("Europe/London"));

これで、$nowロンドンの正しい時刻のDateTimeオブジェクトが含まれます。

PHPは、夏時間調整と奇妙なカスタムタイムイベントで素晴らしい仕事をします。

于 2012-12-19T17:13:38.590 に答える
0

まず、タイムゾーンの問題を回避するために、クライアントとサーバー コードでUTCを使用する必要があります。

さらに、時間が正確に(ナノ秒)正確であることはそれほど重要ではなく、サーバーとクライアントで時間が同じになることがより重要であるという方法であなたの問題を理解しています。

そのため、クライアントとサーバーの両方でその UTC 時刻の一意のソースが必要になります。これは間違いなくあなたのサーバーです。サーバーをクライアントの NTP サーバーとして使用することをお勧めします。しかし、あなたが Web 環境にいると仮定すると、これは実用的ではないように思えます。

そのため、サーバーからのすべてのメッセージにタイムスタンプ (UTC 時間) を追加することをお勧めします。クライアントは、このタイムスタンプを参照として使用する必要があります。さらに、サーバーを呼び出すことで、クライアントに定期的に時刻を更新させることができます。

于 2012-12-19T17:10:58.560 に答える