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
Kunne være fedt.