Skriv en tid som for ? timer siden...


Hvordan skriver man ens dato som Cirka 5 måneder siden eller som Cirka 14 minutter siden som man kender det fra Facebook og andre sider?

Svaret er temmelig simpelt


Her på siden, vises kommentarer med et tidsfelt, som skriver f.eks. Cirka 13 timer siden (17/04/2011 21:07:40) om hvornår en post er skrevet.

Denne funktion kaldes med $msg_time som er i formatet 2010-11-30 16:46:33 altså YYYY-MM-DD TT:HH:SS.

Du kalder funktionen med funktionen nicetime($msg_time);

<?php 

echo "Cirka ".nicetime($msg_time); // $msg_time er i format 2010-11-30 16:46:33

function nicetime($date)
{
    if(empty($date)) {
        return "Ingen dato modtaget";
    }
   
    $periods         = array("sekund", "minut", "time", "dag", "uge", "måned", "år", "årti");
    $lengths         = array("60","60","24","7","4.35","12","10");
   
    $now             = time();
    $unix_date         = strtotime($date);
   
       // check om datoen er valid
    if(empty($unix_date)) {   
        return "Forket type dato";
    }

    // Er det en fremtidig eller fortidig dato
    if($now > $unix_date) {   
        $difference     = $now - $unix_date;
        $tense         = "siden";
       
    } else {
        $difference     = $unix_date - $now;
        $tense         = "fra nu af";
    }
   
    for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
        $difference /= $lengths[$j];
    }
   
    $difference = round($difference);
   
    if($difference != 1) {
    		if ($periods[$j] == 'sekund') $periods[$j].= "er";
    		if ($periods[$j] == 'minut') $periods[$j].= "ter";
    		if ($periods[$j] == 'time') $periods[$j].= "r";
    		if ($periods[$j] == 'dag') $periods[$j].= "e";
    		if ($periods[$j] == 'uge') $periods[$j].= "r";
    		if ($periods[$j] == 'måned') $periods[$j].= "er";
    		if ($periods[$j] == 'Ã¥r') $periods[$j].= "";
    		if ($periods[$j] == 'Ã¥rti') $periods[$j].= "er";
    }
   
    return "$difference $periods[$j] {$tense}";
}

?>

De synes godt om dette · Thomas Petersen · Phillip Pedersen · Tom Frank Christensen
Kommentarer:
Denne funktion bruges i dette kommentarfelt (KIG NU HERNED!)
Cirka 14 år siden (17/04/2011 21:07:40)
ronnie stengade christesen
trode egenligt at den var svære at lave :D Mange tak for eksemplet
Cirka 14 år siden (21/04/2011 20:58:37)
Der er jo ikke nogen grund til at gøre det mere kompliceret end det :) Når det kan fungere ;o)
Cirka 13 år siden (09/05/2011 08:39:53)
Thomas Petersen
Har lige taget den i brug, den er jo kanon. Og tak for det :)
Cirka 13 år siden (18/11/2011 11:33:27)
Thomas Petersen
Denne funktion er smart, men nu har jeg gået og tænkt, kan man udvide den med så den skriver: 2 dage og 23 minutter siden. og ikke kun 1 dag, men også minutter.
Kunne være fedt.
Cirka 13 år siden (18/12/2011 23:53:05)
Du skal være logget ind for at bruge denne funktion.
Brugernavn
Kodeord


Det er gratis at oprette en bruger
Hop til toppen