2017-03-14 13 views
1

これは 'posted-ago'を計算するために使用される関数です。'posted-ago'時間の計算が正しく実行されていません。

function actionTime($ptime) 
{ 
    $estimate_time = time() - $ptime; 
    echo $estimate_time.'<br>'; 
    if($estimate_time < 2) return 'Just now'; 
    $condition = array(
    12 * 30 * 24 * 60 * 60 => 'year', 
    30 * 24 * 60 * 60  => 'month', 
    24 * 60 * 60   => 'day', 
    60 * 60     => 'hour', 
    60      => 'minute', 
    1      => 'second'); 
    foreach($condition as $secs => $str) 
    { 
     $d = $estimate_time/$secs; 
     if($d >= 1) 
     { 
      $r = floor($d); 

      return $r . ' ' . $str . ($r > 1 ? 's' : '') . ' ago'; 
     } 
    } 
} 

関数呼び出し:

$time=actionTime(strtotime($prow['time'])); 

$の船首[ '時間'] DBでは、次のとおりです。2017年3月14日18時08分45秒

問題:

結果を印刷すると、「今すぐ」というメッセージが数分間表示されます。エコーとき

$ estimate_time

は約-15000のような負の数を示しています。

詳細説明:

以下エコー場合:

echo "time():".time()." posted time:".strtotime($prow['time']); 

それは示した:

時間():1489496166 投稿時間:1489511325

現在の時刻がポストされた時刻よりも小さい。どうして?

+0

あなたはおそらくより簡単に[DateTimeクラス](HTTPを使用することによって、これを達成できる – RiggsFolly

+0

'$の船首[「時間」]'で、関数に渡しているものを私たちに示してください。 ://php.net/manual/en/class.datetime.php)と[DateIntervalクラス](http://php.net/manual/en/class.dateinterval.php) – RiggsFolly

+0

'$ estimate_time'が負の数 '-150000'のような日付を入力する必要があります。今は今までにない日付または時刻です。 – RiggsFolly

答えて

0

functionTime(strtotime($ prow ['time']))で時刻を送信することはできません。

actionTime(strtotime( '2016-12-12 12:01:00))のような完全な日付と時刻を必ず送信してください。

+0

以下を参照してください。私は関数を呼び出す前にそれをしました。 –

+0

はい、私は見ることができます。正確なオリジナル$ prow ['time']の値を教えてください。 – Karthick

0

最後に...:D

Iは、時間列の更新CURRENT_TIMESTAMPの属性を除去することによって、問題を解決し、挿入されたPHPの時間()。問題が解決しました。

まだこの問題が発生した理由はわかりません。

このシンプルなトリックで問題をどのように解決したかを知りたがっています。

ありがとうございます。 (イムないプロコーダー)