2016-12-22 1 views
0

PHPで新しいです。タイムスタンプコードの下に時間差があります。PHPのタイムスタンプエラー

public function time_ago($date) { 
    if(empty($date)) { 
     return "No date provided"; 
    } 
    $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade"); 
    $lengths = array("60","60","24","7","4.35","12","10"); 
    $now = time(); 
    $unix_date = strtotime($date); 
    // check validity of date 
    if(empty($unix_date)) { 
     return "Bad date"; 
    } 
    // is it future date or past date 
    if($now > $unix_date) { 
     $difference = $now - $unix_date; 
     $tense = "ago"; 
    } else { 
     $difference = $unix_date - $now; 
     $tense = "from now";} 
    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}"; 
} 

私は今でも投稿する結果が5時間あります。ちょうど45秒前または1分前のような結果が欲しい。

誰でもこの問題の解決にお手伝いできますか?

+0

結果が数時間で間違っている場合は、ほとんどの場合タイムゾーンの問題です。 – Barmar

答えて

0

現在地のタイムゾーンを設定する必要があります。

public function time_ago($date) { 
date_default_timezone_set(date_default_timezone_get()); 
if(empty($date)) { 
    return "No date provided"; 
} 
$periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade"); 
$lengths = array("60","60","24","7","4.35","12","10"); 
$now = time(); 
$unix_date = strtotime($date); 
// check validity of date 
if(empty($unix_date)) { 
    return "Bad date"; 
} 
// is it future date or past date 
if($now > $unix_date) { 
    $difference = $now - $unix_date; 
    $tense = "ago"; 
} else { 
    $difference = $unix_date - $now; 
    $tense = "from now";} 
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}"; 
} 
+0

こんにちはAbhishek、あなたの答えをありがとう。私は上記のコード時間を使用して増加し、私は古いコードを使用する場合は同じままです。古いコードと同様に、私は時間が5時間あり、上記のコード時間は13時間です。私が見つけられないコードで何が間違っていたのですか? –

+0

もう一度試してみてください。私は変更されたコードを持っています。 – Abhishek

+0

ありがと... Barmar、mister martinとabhishek。私の問題は解決する。再度、感謝します。 –

関連する問題