Kjapp og trygg hosting for Wordpress

29 minutter siden function?

clinton4

Medlem
Hei,

Finnes det noen ferdige PHP funksjoner for å konvertere timestamp til f.esk "for 29 minutter siden". slik som facebook viser tiden.
 

clinton4

Medlem
Jeg tenkte mere på en funksjon hvor jeg gir den et timestamp, så skriver den ut følgende basert på differansen mellom timestamp og nåværende tidspunkt.

1 minutt siden
30 minutter siden
1 time siden
3 timer siden
1 dag siden
3 dager siden
1 uke siden
3 uker siden
1 måned siden
3 måneder siden
1 år siden
3 år siden
 

adeneo

Medlem
Kan du ikke bare lage en?

PHP:
function tidSiden($time) {  
    $periods = array("sekunder", "minutter", "timer", "dager", "uker", "måneder", "år", "tiår");  
    $lengths = array("60","60","24","7","4.35","12","10");  
      
    $difference = time() - $time;  
    $tense      = "siden";  
      
    for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {  
        $difference /= $lengths[$j];  
    }  
      
    return round($difference)." $periods[$j] $tense";  
}

Testes for eksempel med:

PHP:
$tid_siden = tidSiden( strtotime('22-09-2012') );
    
echo $tid_siden; //5 måneder siden
 

tyr897

Medlem
PHP:
<?php

function timespan($timestamp) {
    $now  = time();
    $diff = abs($now - $timestamp);

    $plural = array('sekunder', 'minutter', 'timer', 'dager', 'uker', 'måneder', 'år');
    $singular = array('sekund', 'minutt', 'time', 'dag', 'uke', 'måned', 'år');
    $interval = array(60, 60, 24, 7, 4.35, 12);

    for ($i=0, $y=count($interval); $i<$y && $diff>=$interval[$i]; $i++) {
        $diff /= $interval[$i];
    }

    $diff = floor($diff);

    return sprintf(
        '%d %s %s',
        $diff,
        $diff == 1 ? $singular[$i] : $plural[$i],
        $now > $timestamp ? 'siden' : 'til'
    );
}

I bruk blir det:
PHP:
timespan(time()-1800); // 30 minutter siden
timespan(time()+3600); // 1 time til
 
Topp