note 96808 added to function.date-diff

From: Date: Wed, 17 Mar 2010 07:58:53 +0000
Subject: note 96808 added to function.date-diff
Groups: php.notes 
Request: Send a blank email to php-notes+get-167123@lists.php.net to get a copy of this message
This function calculates the difference up to the second. <?php function date_diff($start, $end="NOW") { $sdate = strtotime($start); $edate = strtotime($end); $time = $edate - $sdate; if($time>=0 && $time<=59) { // Seconds $timeshift = $time.' seconds '; } elseif($time>=60 && $time<=3599) { // Minutes + Seconds $pmin = ($edate - $sdate) / 60; $premin = explode('.', $pmin); $presec = $pmin-$premin[0]; $sec = $presec*60; $timeshift = $premin[0].' min '.round($sec,0).' sec '; } elseif($time>=3600 && $time<=86399) { // Hours + Minutes $phour = ($edate - $sdate) / 3600; $prehour = explode('.',$phour); $premin = $phour-$prehour[0]; $min = explode('.',$premin*60); $presec = '0.'.$min[1]; $sec = $presec*60; $timeshift = $prehour[0].' hrs '.$min[0].' min '.round($sec,0).' sec '; } elseif($time>=86400) { // Days + Hours + Minutes $pday = ($edate - $sdate) / 86400; $preday = explode('.',$pday); $phour = $pday-$preday[0]; $prehour = explode('.',$phour*24); $premin = ($phour*24)-$prehour[0]; $min = explode('.',$premin*60); $presec = '0.'.$min[1]; $sec = $presec*60; $timeshift = $preday[0].' days '.$prehour[0].' hrs '.$min[0].' min '.round($sec,0).' sec '; } return $timeshift; } // EXAMPLE: $start_date = 2010-03-15 13:00:00 $end_date = 2010-03-17 09:36:15 echo date_diff($start_date, $end_date); ?> Returns: 1days 20hours 36min 15sec Can be taken up to centuries - if you do the calculations. Hope this finally helps someone! :D ---- Server IP: 69.147.83.197 Probable Submitter: 198.54.202.214 ---- Manual Page -- http://www.php.net/manual/en/function.date-diff.php Edit -- https://master.php.net/note/edit/96808 Del: integrated -- https://master.php.net/note/delete/96808/integrated Del: useless -- https://master.php.net/note/delete/96808/useless Del: bad code -- https://master.php.net/note/delete/96808/bad+code Del: spam -- https://master.php.net/note/delete/96808/spam Del: non-english -- https://master.php.net/note/delete/96808/non-english Del: in docs -- https://master.php.net/note/delete/96808/in+docs Del: other reasons-- https://master.php.net/note/delete/96808 Reject -- https://master.php.net/note/reject/96808 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#167123) next »