note 96808 added to function.date-diff
| From: | eugene at ultimatecms dot co dot za | 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