# Posted By

patcullen on 04/14/08

# Statistics

Viewed 4294 times
Favorited by 17 user(s)

# Days ago function

/ Published in: PHP
`// 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], 	);}`