onsdag 14 september 2011

Guide PHP: Hur du får omformaterar datum

Tänkte göra en snabb lite guide hur du enkelt kan få ett utskrivet datum ur en databas till och bli snyggt.

Istället för t.ex Skriven den 2011-05-30 12:25 så fixar vi så det ser ut så här istället.

Skriven för 2 dagar sedan.


Vi kan börja med och skapa en fil som vi kan döpa till funktioner.php

I funktioner.php kopierar du in detta:


function nicetime($string){
    if(empty($string)) {
        return "Inget datum är angett.";
    }
 
    $periods         = array("sek", "min", "tim", "dag", "veckor", "månader", "år");
    $lengths         = array("60","60","24","7","4.35","12","10");
 
    $now             = time();
    $unix_date         = strtotime($string);
 
       // Kollar om datumet stämmer
    if(empty($unix_date)) {  
        return "Felaktigt datum";
    }
    // is it future date or past date
    if($now > $unix_date) {  
        $difference     = $now - $unix_date;
        $tense         = "sedan";
     
    } else {
        $difference     = $unix_date - $now;
        $tense         = "sedan";
    }
 
    for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
        $difference /= $lengths[$j];
    }
 
    $difference = round($difference);
 
    if($difference != 1) {
        $periods[$j].= "";
    }
 
    return "$difference $periods[$j] {$tense}";
}
Nu har du skapat funktionen för att få ut sekunder,minuter och timmar etc.

Det "jobbiga" är över, svårare en så här var det inte.

För att få detta fungera så inkluderar du funktioner.php i filen där du vill få ut datumet.

Koden för att inkludera:
include("funktioner.php");

Sedan när du hämtar ut datumet ur databasen som kan likna något sådant här:
echo "Skriven för ".$row["datum"]."";

Så lägger du till nicetime som vi har döpt våran funktion till. Så här skall det se ut:
echo "Skriven för ".nicetime($row["datum"])."";

Resultat:
Skriven för 2 dagar sedan.

Inga kommentarer:

Skicka en kommentar