note 102601 added to function.date-diff

[email protected] Wed, 23 Feb 2011 16:22:34 -0800
Newsgroups php.notes
Message-ID <[email protected]>
Based in part on previous try, which didn't work for me :( -- http://us3.php.net/manual/en/function.date-diff.php#101771

function dateDiff($timestamp1, $timestamp2, $format = false){
	
	$date1 = getdate($timestamp1);
	$diff = getdate($timestamp2);
	
	//find the differences between the two
	foreach($diff as $aspect => &$value){
		$value -= $date1[$aspect];
	}
	
	//now adjust for negative numbers
	if( $diff['seconds'] < 0 ){
		$diff['seconds'] += 60;
		$diff['minutes']--;
	}
	//now adjust for negative numbers
	if( $diff['minutes'] < 0 ){
		$diff['minutes'] += 60;
		$diff['hours']--;
	}
	//now adjust for negative numbers
	if( $diff['hours'] < 0 ){
		$diff['hours'] += 24;
		$diff['mday']--;
	}
	//now adjust for negative numbers; special for days!
	if( $diff['mday'] < 0 ){
		$diff['mday'] += cal_days_in_month(CAL_GREGORIAN, $date1['mon'], $date1['year']);
		$diff['mon']--;
	}
	//now adjust for negative numbers
	if( $diff['mon'] < 0 ){
		$diff['mon'] += 12;
		$diff['year']--;
	}
	//now adjust for negative numbers
	if( $diff['year'] < 0 ){
		return 'WTF?';
	}
	
	//return formatted, or just the diff
	if($format){
		return str_replace(
			array(
				'%y'
				,'%m'
				,'%d'
				,'%H'
				,'%M'
				,'%S'
			)
			,array(
				$diff['years']
				, $diff['mon']
				, $diff['mday']
				, $diff['hours']
				, $diff['minutes']
				, $diff['seconds']
			)
			, $format
		);
	}
	return $diff;
}
----
Server IP: 192.41.42.26
Probable Submitter: 71.22.18.147
----
Manual Page -- http://www.php.net/manual/en/function.date-diff.php
Edit        -- https://master.php.net/note/edit/102601
Del: integrated  -- https://master.php.net/note/delete/102601/integrated
Del: useless     -- https://master.php.net/note/delete/102601/useless
Del: bad code    -- https://master.php.net/note/delete/102601/bad+code
Del: spam        -- https://master.php.net/note/delete/102601/spam
Del: non-english -- https://master.php.net/note/delete/102601/non-english
Del: in docs     -- https://master.php.net/note/delete/102601/in+docs
Del: other reasons-- https://master.php.net/note/delete/102601
Reject      -- https://master.php.net/note/reject/102601
Search      -- https://master.php.net/manage/user-notes.php