Revision: 43124
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 17, 2011 07:37 by uberdragon
Initial Code
function timeSince($start,$end='',$units=2) { // $start and $end should be Unix time() format // Common time periods as an array of arrays $periods = array( array(60 * 60 * 24 * 365 , 'year'), array(60 * 60 * 24 * 30 , 'month'), array(60 * 60 * 24 * 7, 'week'), array(60 * 60 * 24 , 'day'), array(60 * 60 , 'hour'), array(60 , 'minute'), array(1 , 'second'), ); $end = (!empty($end))?$end:time(); // if no end timestamp given use the current one for end date $since = $end - $start; // Find the difference of time between now and the past // $end and $start input could be swapped in order to find the time 'until' ;) // Loop around the periods, starting with the biggest for ($i = 0, $j = count($periods); $i < $j; $i++){ $seconds = $periods[$i][0]; $name = $periods[$i][1]; // Find the biggest whole period if (($count = floor($since / $seconds)) != 0){ break; } } $output = ($count == 1) ? '1 '.$name : "$count {$name}s"; $deducted = ($seconds * $count); for($z = 1, $j = count($periods); $z < $j; $z++) { if ($units > $z && $i + $z < $j){ // Retrieving the next requested relevant period $seconds = $periods[$i + $z][0]; $name = $periods[$i + $z][1]; // Only show it if it's greater than 0 if (($count = floor(($since - $deducted) / $seconds)) != 0){ $deducted = $deducted+($seconds * $count); $output .= ($count == 1) ? ', 1 '.$name : ", {$count} {$name}s"; } } } return $output; }
Initial URL
Initial Description
Display amount of time distance between two timestamps in the 2 largest possible time frame terms, adding plural when appropriate. If the second parameter for ending time stamp is left blank the current time() is used. usage: `echo timeSince(1300000006,1300162842); // will echo 1 day, 21 hours` and `echo timeSince(1300162702,1300162842); // will echo 2 minutes, 20 seconds` The last parameter is the number of time units to display (ie: 2 might display minutes, seconds while 3 will display hours, minutes seconds). This defaults to 2.
Initial Title
Function to return amount of time between two unix time stamps as it would be verbalized.
Initial Tags
Initial Language
PHP