2017-01-26 1 views
0

Ich habe diese PHP-Funktion, die timeAgo von einem timestamp zurückgibt. JetztPHP timeZur Rückgabe in X Tagen, wenn der Zeitstempel in der Zukunft ist

function time_ago($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; 
    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] . ' ago'; 
} 

wenn der Zeitstempel größer als NOW, wird er zurückkehren "vor 47 Jahren".

Wie es "in 3 Tagen, 5 Stunden, 16 Minuten" make zurück, wenn Zeitstempel größer als sind JETZT?

Danke.

+1

wenn Zeitstempel als jetzt größer ist als die Differenz <0. –

Antwort

1
function time_ago($time) { 
    $periods = array('second', 'minute', 'hour', 'day', 'week', 'month', 'year', 'decade'); 
    $lengths = array('60', '60', '24', '7', '4.35', '12', '10'); 
    $now = time(); 
    // if($now > $time) { 
    $difference  = $now - $time; 
    if ($now < $time) { 
      $difference = $time - $now; 
    } 
    for ($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) { 
     $difference /= $lengths[$j]; 
    } 
    $difference = round($difference); 
    if ($difference != 1) { 
     $periods[$j] .= 's'; 
    } 
    //if ($now > $time) { 
    $text = $difference . ' ' . $periods[$j] . ' ago'; 
    } elseif ($now < $time) { 
      $text = 'In ' . $difference . ' ' . $periods[$j]; 
    } 

    return $text; 
} 

Dies könnte funktionieren. Obwohl ich keine Schleife zum Hinzufügen der verschiedenen Perioden sehe, nur die erste Übereinstimmung. Und selbst dann hast du wahrscheinlich vergessen, nach einem Match die Schleife zu durchbrechen.

Edit: Sie sind wahrscheinlich besser dran mit der DateTime :: diff-Funktion, die mit der "Format" -Funktion automatisiert diesen Prozess für Sie, genauer und effizienter automatisiert (da Ihre Schleife unvollständig ist und nur die letzte verarbeitet Iteration in dem Array)

http://php.net/manual/en/datetime.diff.php

Verwandte Themen