1

php 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;
?>

上記のスクリプトから、time() を使用しますが、ローカル時間ではなくサーバー時間のみを取得します。どうすれば自分の現地時間 (ユーザーの現地時間) を取得できますか?

4

3 に答える 3

1

クライアントがあなたに情報を渡さなくても、サーバーから現地時間を取得できるかどうかはわかりません。javascriptが良い例です。私がそれを行う方法(私の考えではなく、どこかでそれを読む)は、JavaScriptで現地時間のCookieを設定し、PHPにCookieを読み取らせてから、そのデータをdate_default_timezone_set()で使用することです。それが唯一の防弾の答えだと思います、そしてそれは私にとってうまくいきます。

編集:私はhttp://php.net/manual/en/function.localtime.phpからそれを読みました

于 2012-04-17T09:27:13.427 に答える
0

現地時間を取得するためのサーバーベース/PHPの方法はありません。Javascriptを介してクライアントから取得する必要があります。Googleの「bitbuckettimezonedetect」を使用して、PHPから読み取り、date_default_timezone_set()を介して設定できる「local_timezone」Cookieを設定します。

于 2012-04-17T09:27:48.257 に答える
0

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

于 2012-04-17T09:21:47.533 に答える