Ik wil de tijd net zoals die van Facebook laten zien hoe doe ik deze functie.
Bij minder dan 1 minute "Zojuist" vervolgens 1 min 1uur 1 dag etc laten zien.

Op het moment krijg ik de tijd en datum te zien als "04-12-2014 23:36:50" ik vraag ze aan met $reply_date en $reply_time.

Iemand die weet hoe ik dit voor elkaar krijg of een bestaande script die dit doet ?
<?php
function datum($datum)
{
$verschil = time() - strtotime($datum);

if($verschil < 60 * 60) return round($verschil / 60).' minuten';
elseif($verschil < 60 * 60 * 24) return round($verschil / 60 / 60).' uren';
else return round($verschil / 60 / 60 / 24).' dagen';
}
?>

Zoiets als dit?
Werkt deze met tijd en datum ?
Als ik nu
echo datum("18:00:00 05-12-2014");
OF
echo datum("05-12-2014 18:00:00");

Krijg ik -358 minuten te zien
Nou vooruit ik wilde hem toch al eens maken:

<?php

function datum($datetime, $maxdays = 13)
{
// huidige datum en tijd en het verschil tussen opgegeven datum en tijd berekenen
$now = new DateTime();
$interval = $datetime->diff($now);

// bereken wanneer de 'volgende dag' begint tov de opgegeven datum en tijd
$midnight = clone $datetime;
$midnight->setTime(0, 0);
$midnight->add(new DateInterval('P1D'));

// daarnaast berekenen we even de tijd zes uur later tov de opgegeven datum en tijd
$sixHrsLater = clone $datetime;
$sixHrsLater->add(new DateInterval('PT6H'));

// als de opgegeven tijd in de toekomst ligt geven we een foutmelding
if($datetime > $now)
return 'Error';

// als de tijd nu in dezelfde dag valt als de opgegeven tijd OF als het verschil minder is als zes uur
if($now < $midnight || $now < $sixHrsLater)
{
$hours = $interval->format('%h');

// indien minimaal 1 uur geleden
if($hours > 0)
return $hours . ' uur geleden';

$min = $interval->format('%i');

// indien minder dan een minuut geleden
if($min == 0)
return 'zojuist';

// indien minder dan twee minuten geleden
if($min == 1)
return '1 minuut geleden';

// indien twee of meer minuten geleden
return $min . ' minuten geleden';

}

$days = $interval->format('%a');

// gisteren
if($days == 1)
return 'gisteren';

// Minder dan de opgegeven maximale dagen geleden
if($days <= $maxdays)
return $days . ' dagen geleden';

// indien meer dan maximale opgegeven dagen dan gewoon de datum teruggeven
return $datetime->format('d-m-Y'); // 'd-m-Y H:i' om de tijd erbij te vermelden
}

// test
echo datum(new DateTime('05-12-2014 20:18:00')) . '<br>';
echo datum(new DateTime('04-12-2014')) . '<br>';
echo datum(new DateTime('22-11-2014')) . '<br>';
echo datum(new DateTime('10-11-2014')) . '<br>';
echo datum(new DateTime('03-11-2014')) . '<br>';
echo datum(new DateTime('03-11-2015')) . '<br>';

?>
Dat komt mooi uit voor mij dat je dit al wilde maken, bedankt voor om deze te delen.
Ik heb alleen een probleem met;


echo datum(new DateTime('05-12-2014 20:18:00')) . '<br>';


Hier krijg ik error terug want ik wil het liefst op datum en tijd laten checken.
Of ik begrijp jou niet of je bedoelt dat je op de laatste een foutmelding krijgt want die heeft als jaartal 2015...

Of je server / computer staat niet op de juiste tijd ingesteld.
Nee ik heb gewoon de hele code gekopieerd geplakt output kreeg ik dit;


Error
gisteren
13 dagen geleden
10-11-2014
03-11-2014
Error


Nevermind na restarten van mn server werkt hij nu gewoon goed.

HEEL ERG BEDANKT VOOR DEZE FUNCTIE!!
Zover ik heb kunnen zien is, laat secondes, minuten, uren, dagen, 1 dag verschil is laat gisteren zien, en volgens mij max 13 (te instellen) dagen laten zien anders datum laten zien ?
exact!

Daarnaast laat ie niet gelijk gisteren zien als je om 23:55 een bericht aanmaakt en het is nu 0:05. Dan laat ie gewoon zien dat het 10 minuten geleden is. Dit doet ie tot maximaal zes uur. Dan is het inmiddels wel de volgende ochtend en kunnen we gerust zeggen dat het gisteren was
Ik ben echt blij met dit functie hehe, ik heb voor de gisteren output
 return "gisteren om " .  $datetime->format("H:i"); 
toegevoegd. Zoals bij FB dan is het meer overzichtelijker qua tijd.

Reageren