hallo,
ich bin auf der suche nach einer funktion die "lesbare daten" erstellt.
dabei geht es um folgendes: man füttert sie mit daten datetime-format, also zb 2009-03-22 21:17:06 und erhält als ausgabe sowas wie: "vor 5 minuten", "vor 1 stunde", "gestern", "letzte woche", "letzten Monat", vor einem Jahr" ect, wie zum beispiel bei last.fm oder facebook.
hat jemand zufällig sowas schonmal gemacht?
/**
* Ausgabe einer Zeitangabe in der Form vor x Stunden/Tage usw.
*
* @param int $timestamp
* @return string
*/
function format_datesince($timestamp) {
$past = time() - $timestamp;
if ($past <= 60) {
return 'vor einer Minute';
}
if ($past <= 60 * 60) {
$n = round($past /60);
return 'vor '.$n.' Minuten';
}
if ($past < 60 * 60 * 2) {
return 'vor einer Stunde';
}
if ($past < 60 * 60 * 24) {
$n = round($past /(60*60));
return 'vor '.$n.' Stunden';
}
if ($past < 60 * 60 * 24 * 2) {
return 'gestern';
}
if ($past < 60 * 60 * 24 * 7) {
$n = round($past /(60*60*24));
return 'vor '.$n.' Tagen';
}
return date('d.m.Y', $timestamp);
}
Meine bisherige Version
cool, danke.
hallo
nochmal eine frage: wie bekomme ich da anzeigen wie
'am montag' (dieser woche)
'gestern morgen' und
'im märz 2008'
da eingebaut? kann ich das auch irgentwie mit im datetime-format verwenden?
Gehen tut alles:
function getTimeOfTheDay ($time) {
$h = date('G', $time);
if ($h < 4) {
return __('night');
} elseif ($h < 9) {
return __('morning');
} elseif ($h < 15) {
return __('noon');
} elseif ($h < 18) {
return __('afternoon');
} else {
return __('evening');
}
}
function getDay($time) {
$d = date('N', $time);
switch ($d) {
case 1: return __('Monday');
case 2: return __('Tuesday');
case 3: return __('Wednesday');
case 4: return __('Thursday');
case 5: return __('Friday');
case 6: return __('Saturday');
case 7: return __('Sunday');
}
return null;
}
Die Datums darstellung ist nur grade nicht meine Priorität, deswegen dauert es noch bis meine Format Fkt. entgültig ist.
Brauchte eben die selbe Funktion :p