2012-05-02 3 views
7

私たちは世界中の人々から利用されるウェブサイトを開発しています。ウェブサイトにはチャットセクションがあり、メッセージにタイムスタンプが表示されます。私は各メッセージのタイムスタンプをデータベースに保存しています。訪問者の場所に基づいて、ローカライズされた時間を表示するにはどうすればよいですか?

自分の現地時間に基づいて、訪問者への各メッセージに適切な時間を表示する方法を教えてください。

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

+3

フロントエンドでJavascriptを使用してサーバーのタイムスタンプを取得し、現地時間を計算して印刷します。格納するサーバーのタイムスタンプがUTC + 0の場合は、より簡単になります。 – Nadh

答えて

7

あなたは地理IP

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

それとも、JavaScriptを使用することができるとともに、ユーザーのタイムゾーンに推測を行うことができます。私はへと洞察力を持っていない

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

+0

ここに私が使用したものがあります: var date = new Date(Date.UTC(年、月、日、時、分)); .htmlを $( '#' +セレクタ)(? \t(date.getHours()> 9 date.getHours():('0' + date.getHours()))+ ':' + \t( date.getMinutes()> 9?date.getMinutes():('0' + date.getMinutes())) ); データベースから年、月、日、時、分がサーバーに渡されます。 –

-2

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

0

どのようにPHPでこれを行うが、javacriptについても尋ねているので、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

注意。自分のネットワークアドレスに基づいてユーザーの世界的な位置をチェックしません。実際にそれをしたい場合は、私の答えを無視してください:)

+0

私は同じことが必要ですが、サーバーによって返されたタイムスタンプのベースで計算する必要があります。 –

1

これは、ユーザーのIPアドレス($ _SERVER ['REMOTE_ADDR'])を知っていればPHPで行うことができます。 (例えば)彼/彼女がプロキシの背後にある場合、ユーザー「本物」の位置を反映neccesaryしない

> IPアドレスIPアドレスを - 場所<に一致させるためのジオIP(http://php.net/manual/en/book.geoip.php)に確認してください。モバイルデバイス(GPRS /エッジ/ 3G/HSDPA)を使用すると、私はいくつかの奇妙な動作も見たことがあります。

+0

ジオロケーショントラッキングをスキップします。正確ではなく、サーバー上にありAPIのほとんどが支払われている場合は、データベースに多くの時間とスペースが必要です。私はjavascriptとサーバーのタイムスタンプを使ってこれを行う方法を探します。 –

0

他の回答として、Javascriptはこれに適した技術ですが、PHPを使用することを強くお勧めする場合は、ジオロケーションライブラリまたはサービスを使用してIPからタイムゾーンを推測する方法があります住所。

しかし、これは常に、最良の推測ソリューションと訪問者がから来ている多くの場合、IPアドレスになりますユーザが現在であるタイムゾーンと一致しない場合があります。

+0

私がする必要がある場合、私はJavaScriptを使用する準備ができています。あなたが推測するかもしれないが、私は地理位置追跡に頼ることは望まない。 –

0

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

関連する問題