Is there anyway in php to figure out the number of days between two dates? Given two dates by the user in the format YYYY-MM-DD can I find the number of days between the two. I can change the format if I have too.
| SitePoint Sponsor |
Is there anyway in php to figure out the number of days between two dates? Given two dates by the user in the format YYYY-MM-DD can I find the number of days between the two. I can change the format if I have too.


This is one solution, if date format is kept consistently at YYYY-MM-DD.
PHP Code:
<?php
$date0 = "2002-11-25"; //date begin
$date1 = "2003-01-09"; //date end
$dates0 = explode("-",$date0);
$dates1 = explode("-",$date1);
//Note: 86400 seconds in 1 day
echo round((mktime(0,0,0,$dates1[1],$dates1[2],$dates1[0])-mktime(0,0,0,$dates0[1],$dates0[2],$dates0[0]))/86400)." days";
?>
Here's a couple of useful date functions I got from somewhere - however, both use the php date timestamp.
$retval = floor($retval);PHP Code:function dateAdd ($interval, $number, $date) {
$date_time_array = getdate($date);
$hours = $date_time_array["hours"];
$minutes = $date_time_array["minutes"];
$seconds = $date_time_array["seconds"];
$month = $date_time_array["mon"];
$day = $date_time_array["mday"];
$year = $date_time_array["year"];
switch ($interval) {
case "yyyy":
$year +=$number;
break;
case "q":
$month +=($number*3);
break;
case "m":
$month +=$number;
break;
case "y":
case "d":
case "w":
$day+=$number;
break;
case "ww":
$day+=($number*7);
break;
case "h":
$hours+=$number;
break;
case "n":
$minutes+=$number;
break;
case "s":
$seconds+=$number;
break;
}
$timestamp = mktime($hours ,$minutes, $seconds,$month ,$day, $year);
return $timestamp;
}
function dateDiff ($interval, $date1,$date2) {
// get the number of seconds between the two dates
$timedifference = $date2 - $date1;
switch ($interval) {
case "w":
$retval = $timedifference / 604800;
break;
case "d":
$retval = $timedifference / 86400;
break;
case "h":
$retval = $timedifference / 3600;
break;
case "n":
$retval = $timedifference / 60;
break;
case "s":
$retval = $timedifference;
break;
}
return $retval;
}
?>
Bookmarks