wordtime PHP Function

The following function allows you to to input a time() variable, and it will return a string that represents something such as

6 days 21 hours ago

or

6 days 21 hours to go

based on the tense of the data inputted (negative / positive).

You can modify the $parts to change how many sections of the string is shown. for example, a $parts=3 would show

6 days 21 hours 48 minutes ago

…etc.

function wordtime($data) {

	$parts=2;

	$temp = date("c", $data);
	$title = date("l, F d, Y ~ g:iA O", $data);
	$date = strtotime($temp);

	$diff = time() - $date;

	$periods_ago = array('decade' => 315360000,
		'year' => 31536000,
		'month' => 2628000,
		'week' => 604800,
		'day' => 86400,
		'hour' => 3600,
		'minute' => 60,
		'second' => 1);

	$periods_togo = array('decade' => -315360000,
		'year' => -31536000,
		'month' => -2628000,
		'week' => -604800,
		'day' => -86400,
		'hour' => -3600,
		'minute' => -60,
		'second' => -1);

	if($diff >= 0){
		foreach ($periods_ago as $key => $value) {
			if ($diff >= $value) {
				$time = floor($diff/$value);
				$difference %= $value;
				$return_value .= ($return_value ? ' ' : '').$time.' ';
				$return_value .= (($time > 1) ? $key.'s' : $key);
				$parts--;
			}
			if ($parts == '0') { break; }
		}
		switch($return_value){
			case '':
				return "now";
			default:
				return "" .$return_value.' ago';
		}
	}
	else{
		foreach ($periods_togo as $key => $value) {
			if ($diff <= $value) {
				$time = floor($diff/$value);
				$diff %= $value;
				$return_value .= ($return_value ? ' ' : '').$time.' ';
				$return_value .= (($time > 1) ? $key.'s' : $key);
				$parts--;
			}
			if ($parts == '0') { break; }
		}
		return "" .$return_value.' to go';
	}
}