note 93915 deleted from function.date-diff by danbrown

From: Date: Wed, 10 Feb 2010 11:39:34 +0000
Subject: note 93915 deleted from function.date-diff by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-165824@lists.php.net to get a copy of this message
Note Submitter: davix ---- This is correctly working time differentiating function. It's resistant to problems with leap year and different days of month. Inputs are two timestamps and function returns array with differences in year, month, day, hour, minute a nd second. <?php function date_diff($d1, $d2){ /* compares two timestamps and returns array with differencies (year, month, day, hour, minute, second) */ //check higher timestamp and switch if neccessary if ($d1 < $d2){ $temp = $d2; $d2 = $d1; $d1 = $temp; } else { $temp = $d1; //temp can be used for day count if required } $d1 = date_parse(date("Y-m-d H:i:s",$d1)); $d2 = date_parse(date("Y-m-d H:i:s",$d2)); //seconds if ($d1['second'] >= $d2['second']){ $diff['second'] = $d1['second'] - $d2['second']; } else { $d1['minute']--; $diff['second'] = 60-$d2['second']+$d1['second']; } //minutes if ($d1['minute'] >= $d2['minute']){ $diff['minute'] = $d1['minute'] - $d2['minute']; } else { $d1['hour']--; $diff['minute'] = 60-$d2['minute']+$d1['minute']; } //hours if ($d1['hour'] >= $d2['hour']){ $diff['hour'] = $d1['hour'] - $d2['hour']; } else { $d1['day']--; $diff['hour'] = 24-$d2['hour']+$d1['hour']; } //days if ($d1['day'] >= $d2['day']){ $diff['day'] = $d1['day'] - $d2['day']; } else { $d1['month']--; $diff['day'] = date("t",$temp)-$d2['day']+$d1['day']; } //months if ($d1['month'] >= $d2['month']){ $diff['month'] = $d1['month'] - $d2['month']; } else { $d1['year']--; $diff['month'] = 12-$d2['month']+$d1['month']; } //years $diff['year'] = $d1['year'] - $d2['year']; return $diff; } $born_date = mktime(6,30,0,7,24,2008); $date_diff_array = date_diff($born_date, time()); print_r($date_diff_array); ?>

« previous php.notes (#165824) next »