可能性の重複:
How can I determine a web user's time zone?のgetユーザーのタイムゾーン
これを行うための最善の方法は何ですか? PHPやjavascript.Can誰かがいくつかのスニペットを私に提供することができますか?ありがとう。
可能性の重複:
How can I determine a web user's time zone?のgetユーザーのタイムゾーン
これを行うための最善の方法は何ですか? PHPやjavascript.Can誰かがいくつかのスニペットを私に提供することができますか?ありがとう。
これはあなたのPHPの変数としてタイムゾーンを取得します。 jQueryとPHPを使って関数を書きました。これはテストされ、動作します!あなたが変数としてタイムゾーンを持っているしたいPHPページ
、どこかのページの最上部付近のコードスニペットを持っている:
<?php
session_start();
$timezone = $_SESSION['time'];
?>
これは、セッション変数「時間」を読みます、私たちはこれから作成しようとしています。あなたはjQueryのを含めるために必要なすべての最初の<head>
セクション、内の同じページで
、:<head>
セクションでも
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
,,これはjQueryを貼り付けます。
<script type="text/javascript">
$(document).ready(function() {
if("<?php echo $timezone; ?>".length==0){
var visitortime = new Date();
var visitortimezone = "GMT " + -visitortime.getTimezoneOffset()/60;
$.ajax({
type: "GET",
url: "http://domain.com/timezone.php",
data: 'time='+ visitortimezone,
success: function(){
location.reload();
}
});
}
});
</script>
あなたは可能気づいていないかもしれませんが、実際のドメインに変更する必要があります。
最後の1つです。あなたはおそらく、ちょっとしたtimezone.phpが何であるか疑問に思っています。 JavaScriptを実行し、これが正常に動作する場合
<?php
session_start();
$_SESSION['time'] = $_GET['time'];
?>
が、それは最初のページをロードします(上記のURLとそれにtimezone.phpとポイントと呼ばれる新しいファイルを作成します):まあ、それは単に、これがあります、ページをリロードします。 $ timezone変数を読んで、それをあなたの喜びに使うことができます!現在のUTC/GMTタイムゾーンオフセット(GMT -7)または現在のタイムゾーンを返します。
あなたはそれがJavaScriptを使用してほど正確ではないだろう、私のblog
乾杯サーバー側で
</Westy92>
Odedが答えたように。あなたはjavascriptでこの種の検出機能を持つ必要があります。
私はこれに苦労して、オフセットが十分ではないことに気付きました。たとえば、夏時間に関する情報は一切表示されません。 zoneinfoのデータベースキーにマップするコードを書くことになりました。
1年のうちのいくつかの日付をチェックすると、より正確にタイムゾーンを特定できます。
は、ここにスクリプトを試してみてください:http://jsfiddle.net/pellepim/CsNcf/
は、単にあなたのシステムのタイムゾーンを変更し、それをテストするために実行]をクリックします。クロムを実行している場合は、新しいタブで各テストを行う必要があります(タイムゾーンの変更を取得するには、safarを再起動する必要があります)。
あなたがチェックアウトコードの詳細が必要な場合:https://bitbucket.org/pellepim/jstimezonedetect/
これはおそらく最も合理的なアプローチです。 –
にこれについての詳細を読むことができます。一方で、そのような課題を解決する必要があることもあります。この場合、可能な解決策を共有するだけで、私はこの答えを書いています。
ユーザーのタイムゾーンを決定する必要がある場合は、Geo-IPサービス経由で行うことができます。タイムゾーンを提供するものもあります。たとえば、この1つ(http://smart-ip.net/geoip-api)は次のように役立ちます。
<?php
$ip = $_SERVER['REMOTE_ADDR']; // means we got user's IP address
$json = file_get_contents('http://smart-ip.net/geoip-json/' . $ip); // this one service we gonna use to obtain timezone by IP
// maybe it's good to add some checks (if/else you've got an answer and if json could be decoded, etc.)
$ipData = json_decode($json, true);
if ($ipData['timezone']) {
$tz = new DateTimeZone($ipData['timezone']);
$now = new DateTime('now', $tz); // DateTime object corellated to user's timezone
} else {
// we can't determine a timezone - do something else...
}
http://smart-ip.net/にアクセスすることはできません。だから、この解決策はあいまいです。私は彼らがサーバーをシャットダウンしたと思う。したがって、これによって返される結果がnullであるため、このコードは自己責任で使用してください。 –
(-1)http://smart-ip.net/geoip-json/202.191.214.178 - 一時的にサービスを利用できない – Chinmay235
今すぐこのサイトを試すことができます:http://ip-api.com/json/ –
私はこれをほとんど諦めました!ありがとう! – andrei
$ timezoneが定義されていないとエラーが表示されます。どうして? – arboles
私は、このソリューションは基本的には間違っていると考えています(少なくともいくつかの状況では)。これは、ユーザーが時間を、希望するものに、http://domain.com/timezone.phpを単に呼び出すだけで変更できるようにするためです。 –