2012-04-17 6 views
1

php time()を使用してユーザーの現地時間を取得するにはどうすればよいですか、それとも別の方法がありますか? これはタイムゾーンにあることを意味します。time()のタイムゾーンが異なる

私は、ユーザーのローカル時間で前の時間を計算する必要が

、ここに私は時間前に機能が見つかり素敵なスクリプトです:上記のスクリプトから

<?php 
function timeago($time) 
    { 
    $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade"); 
    $lengths = array("60","60","24","7","4.35","12","10"); 

    $now = time(); 

    $difference  = $now - $time; 
    $tense   = "ago"; 

    for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) 
     { 
     $difference /= $lengths[$j]; 
     } 

    $difference = round($difference); 

    if($difference != 1) 
     { 
     $periods[$j].= "s"; 
     } 

    return "$difference $periods[$j] $tense"; 
    } 
?> 

<?php 

$date = strtotime('2012-04-15 07:41:03'); 
$datep = timeago($date); 

echo $datep; 
?> 

が、私は時間を(使用)それだけで私を取得します私の側のローカル時間ではなく、サーバー時間。現地時間(ユーザーの現地時間)を取得するにはどうすればよいですか?

+0

http://stackoverflow.com/questions/4746249/get-user-timezoneの重複http://stackoverflow.com/questions/13/how-can-i-determine-a-web-users-time-zone ?? – ManseUK

+0

ユーザーのタイムゾーンはどのくらいですか?あなたのPHPスクリプトを知らない限り、それはサーバの時間がかかる( '$ time = time();')か、GMT/UTC時間を選択する( '$ time =(int)gmdate 'U'); ')。 – hakre

+0

ありがとうManseUK – sm21guy

答えて

0

これを行う最もよい方法はクライアント側です。 JavascriptのDate関数を使用して、PHPに送信します。

+0

なぜこれがdownvotedされたかわからない、それはクッキーと組み合わせている限り、最も効果的な方法です。 +1 –

1

クライアントが情報を渡さなくても、サーバからローカルタイムを取得することはいつでも可能です.JavaScriptは良い例です。私のやり方(私の考えではなく、どこか読んでください)はjavascriptを使って現地時刻のクッキーを設定し、PHPがcookieを読み込み、date_default_timezone_set()でそのデータを使用するようにします。私はそれが唯一の弾丸の答えだと思うし、それは私のためにうまくいく。

編集:私は、ローカルタイムを取得するためのサーバーベースの/ PHPの方法はありませんhttp://php.net/manual/en/function.localtime.php

0

からそれを読んで。 Javascript経由でクライアントから取得する必要があります。 Googleの "bitbucket timezone detect"を使ってPHPから読み込み、date_default_timezone_set()で設定できる "local_timezone"クッキーを設定します。

関連する問題