note 93915 added to function.date-diff

From: Date: Tue, 06 Oct 2009 19:46:47 +0000
Subject: note 93915 added to function.date-diff
Groups: php.notes 
Request: Send a blank email to php-notes+get-161412@lists.php.net to get a copy of this message
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); ?> ---- Server IP: 87.124.86.47 Probable Submitter: 89.103.123.67 (proxied: 89.103.123.67) ---- Manual Page -- http://www.php.net/manual/en/function.date-diff.php Edit -- https://master.php.net/note/edit/93915 Del: integrated -- https://master.php.net/note/delete/93915/integrated Del: useless -- https://master.php.net/note/delete/93915/useless Del: bad code -- https://master.php.net/note/delete/93915/bad+code Del: spam -- https://master.php.net/note/delete/93915/spam Del: non-english -- https://master.php.net/note/delete/93915/non-english Del: in docs -- https://master.php.net/note/delete/93915/in+docs Del: other reasons-- https://master.php.net/note/delete/93915 Reject -- https://master.php.net/note/reject/93915 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#161412) next »