Return to Snippet

Revision: 5933
at April 14, 2008 04:22 by patcullen


Initial Code
// convert a date into a string that tells how long ago that date was.... eg: 2 days ago, 3 minutes ago.
function ago($d) {
	$c = getdate();
	$p = array('year', 'mon', 'mday', 'hours', 'minutes', 'seconds');
	$display = array('year', 'month', 'day', 'hour', 'minute', 'second');
	$factor = array(0, 12, 30, 24, 60, 60);
	$d = datetoarr($d);
	for ($w = 0; $w < 6; $w++) {
		if ($w > 0) {
			$c[$p[$w]] += $c[$p[$w-1]] * $factor[$w];
			$d[$p[$w]] += $d[$p[$w-1]] * $factor[$w];
		}
		if ($c[$p[$w]] - $d[$p[$w]] > 1) { 
			return ($c[$p[$w]] - $d[$p[$w]]).' '.$display[$w].'s ago';
		}
	}
	return '';
}

// you can replace this if need be. This converts my dates returned from a mysql date string into 
//   an array object similar to that returned by getdate().
function datetoarr($d) {
	preg_match("/([0-9]{4})(\\-)([0-9]{2})(\\-)([0-9]{2}) ([0-9]{2})(\\:)([0-9]{2})(\\:)([0-9]{2})/", $d, $matches);
    return array( 
		'seconds' => $matches[10], 
		'minutes' => $matches[8], 
		'hours' => $matches[6],  
		'mday' => $matches[5], 
		'mon' => $matches[3],  
		'year' => $matches[1], 
	);
}

Initial URL
http://pat.b22222.com

Initial Description
Takes a date and returns a string describing how long ago that date was. examples: 3 seconds ago, 5 days ago, 2 years ago, you get the idea :)

Initial Title
Days ago function

Initial Tags
date

Initial Language
PHP