2017-03-14 3 views
1

Dies ist die Funktion wird verwendet, um "posted-ago" zu berechnen.Rechnen 'vorgebucht' Zeit funktioniert nicht richtig mit strtotime() und date() Funktionen in PHP

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'; 
     } 
    } 
} 

Funktionsaufruf:

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

$ prow [ 'Zeit'] in DB ist: 2017-03-14 18:08:45

Problem:

Wenn ich das Ergebnis drucke, wird "gerade jetzt" für viele Minuten angezeigt.

$ estimate_time

zeigt negative Zahl wie um -15000, wenn Echo.

Herstellung:

Wenn die folgende Echo:

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

Es zeigte sich:

time(): 1489496166 veröffentlicht Zeit: 1489511325

Die aktuelle Zeit ist kürzer als die angegebene Zeit. Warum?

+0

Bitte zeigen Sie uns, was Sie in die Funktion in '$ prow sind vorbei [‚Zeit‘]' – RiggsFolly

+0

könnten Sie wahrscheinlich dies erreichen einfacher durch die [Datetime-Klasse] (HTTP : //php.net/manual/en/class.datetime.php) und [DateInterval class] (http://php.net/manual/en/class.dateinterval.php) – RiggsFolly

+0

Wenn '$ estimate_time' ein a zeigt negative Zahl wie '-150000' Sie müssen ein Datum eingeben, das größer ist als JETZT, dh ein Datum oder eine Uhrzeit, die nach jetzt nicht vorher ist – RiggsFolly

Antwort

0

Sie können in der Funktion actionTime (strtotime ($ prow ['time'])) keine Zeit alleine senden.

Stellen Sie sicher, senden Sie vollständige Datum und Uhrzeit wie actionTime (strtotime ('2016-12-12 12:01:00));

+0

Bitte siehe unten. Ich habe das getan, bevor ich die Funktion aufgerufen habe. –

+0

Ja, ich kann sehen. Können Sie mir exakt den ursprünglichen Wert von $ prow ['time'] geben? – Karthick

0

Schließlich ...: D

löste ich das Problem, indem Sie das Attribut Entfernen auf Update CURRENT_TIMESTAMP für die Zeitspalte und eingefügt PHP-time(). Problem gelöst.

Noch weiß ich nicht, warum dieses Problem aufgetreten ist.

Ich wollte nur wissen, wie ich das Problem mit diesem einfachen Trick gelöst habe.

Vielen Dank. (Im nicht pro-Coder)

Verwandte Themen