psychohagis Posted January 6, 2007 Share Posted January 6, 2007 Does anyone know a good function that will say how long ago a post was for example.I found this one:[code]function kiedy($ts) { $ts=time()-$ts; if ($ts<60) // <1 minute return $ts." seconds ago"; elseif ($ts<60*60) // <1 hour return floor($ts/60)." minutes ago"; elseif ($ts<60*60*2) // <2 hour return "1 hour ago"; elseif ($ts<60*60*24) // <24 hours = 1 day return floor($ts/60*60)." hours ago"; elseif ($ts<60*60*24*2) // <2 days return "1 day ago"; elseif ($ts<60*60*24*7) // <7 days = 1 week return floor($ts/60*60*24)." days ago"; elseif ($ts<60*60*24*30.5) // <30.5 days ~ 1 month return floor($ts/60*60*24*7)." weeks ago"; elseif ($ts<60*60*24*365) // <365 days = 1 year return floor($ts/60*60*24*30.5)." months ago"; else // more than 1 year return floor($ts/60*60*24*365)." years ago";};[/code]But it does not work. When I run a Timestamp for a post I made 3 hours ago it says [b]12527 hours ago [/b] Quote Link to comment Share on other sites More sharing options...
psychohagis Posted January 6, 2007 Author Share Posted January 6, 2007 Solved, I found this one which seems to work:[code]function ago($timestamp){ $difference = time() - $timestamp; if($difference < 60) return $difference." seconds ago"; else{ $difference = round($difference / 60); if($difference < 60) return $difference." minutes ago"; else{ $difference = round($difference / 60); if($difference < 24) return $difference." hours ago"; else{ $difference = round($difference / 24); if($difference < 7) return $difference." days ago"; else{ $difference = round($difference / 7); return $difference." weeks ago"; } } } } }[/code] Quote Link to comment Share on other sites More sharing options...
taith Posted January 6, 2007 Share Posted January 6, 2007 <?phpfunction timeago($timestamp){ $current_time = time(); $difference = $current_time - $timestamp; $periods = array("minute", "hour", "day", "week", "month", "year", "decade"); $lengths = array(60, 3600, 86400, 604800, 2630880, 31570560, 315705600); for($val = sizeof($lengths) - 1; ($val >= 0) && (($number = $difference / $lengths[$val]) < 1); $val--); if($val < 0) $val = 0; $new_time = $current_time - ($difference % $lengths[$val]); $number = floor($number); if($number != 1) $periods[$val].= "s"; $text = sprintf("%d %s ", $number, $periods[$val]); if(($val >= 1) && (($current_time - $new_time) > 0)) $text .= timeago($new_time); return $text;}?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.