Revision: 43124
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];
\$name = \$periods[\$i];

// 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];
\$name = \$periods[\$i + \$z];

// 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`