note 93914 added to function.mktime

From: Date: Tue, 06 Oct 2009 19:39:23 +0000
Subject: note 93914 added to function.mktime
Groups: php.notes 
Request: Send a blank email to php-notes+get-161411@lists.php.net to get a copy of this message
I couldn't find any correct date differentiate function anywhere so I wrote this one which works correctly. It's fully resistant to all troubles with different day count of the month or leap year. Input must be two timestamps and output is associative array with year, month, day, hour, minute, second items. It can be used for exact age or similar issues. <?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.41 Probable Submitter: 89.103.123.67 (proxied: 89.103.123.67) ---- Manual Page -- http://www.php.net/manual/en/function.mktime.php Edit -- https://master.php.net/note/edit/93914 Del: integrated -- https://master.php.net/note/delete/93914/integrated Del: useless -- https://master.php.net/note/delete/93914/useless Del: bad code -- https://master.php.net/note/delete/93914/bad+code Del: spam -- https://master.php.net/note/delete/93914/spam Del: non-english -- https://master.php.net/note/delete/93914/non-english Del: in docs -- https://master.php.net/note/delete/93914/in+docs Del: other reasons-- https://master.php.net/note/delete/93914 Reject -- https://master.php.net/note/reject/93914 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#161411) next »