8

私たちは、世界中の人々から使用されるウェブサイトを開発しています。Web サイトにチャット セクションがあり、メッセージにタイムスタンプを表示したいと考えています。各メッセージのタイムスタンプをデータベースに保存しています。

訪問者の現地時間に基づいて、各メッセージの適切な時間を訪問者に表示する方法は何ですか?

ユーザーにタイムゾーンを尋ねたくありません。PHPのみを使用してこれを行う方法はありますか?そうでない場合 - JavaScript を使用して、訪問者の現在の時刻に基づいて現在の時刻を表示する方法は何ですか?

4

8 に答える 8

9

geo IP を使用して、ユーザーのタイムゾーンを推測できます

http://php.net/manual/en/book.geoip.php

または、JavaScript を使用できます。

http://www.onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/

于 2012-05-02T14:50:38.167 に答える
1

ユーザーの PC で設定された時間を正確に表示する唯一の保証された方法は、JavaScript を使用することです。サーバー側のジオ検出を試すことはできますが、データベースは決して完璧ではなく、ユーザーがまったく異なるタイム ゾーンのプロバイダーのリモート クライアントである可能性もあります。タイムスタンプを Unix エポック時間からの秒単位で送信し、JavaScript でこの時間でDateオブジェクトを初期化し、その .get (UTC なし) メソッドを使用して、ユーザーのローカル表現で対応する時間を取得します。何らかの理由で現地時間を上書きしたい場合に備えて、特定のタイムゾーンを使用するオプションをユーザーに提供することも良い考えです。

于 2012-05-02T14:57:01.140 に答える
1

ユーザーの IP アドレス ($_SERVER['REMOTE_ADDR']) がわかっている場合は、PHP でこれを行うことができます。一致する場所については、 Geo-IP ( http://php.net/manual/en/book.geoip.php ) を調べてください<-> ip-address

(たとえば)ユーザーがプロキシの背後にいる場合、IPアドレスはユーザーの「実際の」位置を反映する必要はありません。また、モバイル デバイス (GPRS/edge/3G/HSDPA) を使用しているときに奇妙な動作が見られました。

于 2012-05-02T14:53:24.410 に答える
0

他の回答が言っているように、Javascript はこれに適したテクノロジですが、php の使用を主張する場合は、ジオロケーション ライブラリまたはサービスを使用して、IP アドレスからタイムゾーンを推測することができます。

ただし、これは常に最善の推測による解決策であり、多くの場合、訪問者の発信元の IP アドレスは、ユーザーが現在いるタイムゾーンと一致しない場合があります。

于 2012-05-02T14:54:10.263 に答える
0

The easiest way is to get the browser to tell your script what the user time and zone is. For example:-

<input name=tz type-hidden id=tz><script>document.getElementById("tz").value=new Date;</script>

Then, your PHP will get their current time and zone next time they send anything to your chat: e.g.

'Wed Nov 03 2021 09:21:01 GMT+1000 (Australian Eastern Standard Time)'

You can then use the GMT+xxx code to convert your server time to their local time in PHP.

于 2021-11-02T23:22:43.330 に答える
0

PHPでこれを行う方法についての洞察はありませんが、JavaScriptについても尋ねているので、Dateオブジェクトを使用できます。

var d = new Date();  // creates a Date object and initializes it with
                     // user's current time

d.getTimezoneOffset();  // time zone offset in minutes

d.getDay();
d.getHours();

/* etc... gets information about the user's local time */

完全な参照: http://www.w3schools.com/jsref/jsref_obj_date.asp

もちろん、これはユーザーのコンピューターの時刻設定に基づいていることにも注意してください。ユーザーのネットワーク アドレスに基づいてユーザーの世界的な位置を確認することはありません。あなたが実際にそれをしたいのなら、私の答えを無視してください:)

于 2012-05-02T14:52:21.840 に答える
-2

PHP はサーバー側のスクリプト言語であるため、GeoIP を使用しない限り、訪問者の現地時間を取得することはできません。代わりに JavaScript を使用してください。

于 2012-05-02T14:47:53.003 に答える