views:

62

answers:

7

Hello!

If I have two variables $startDate="YYYYmmdd" and $endDate="YYYYmmdd", how can I get the number of days between them please?

Thank you.

+2  A: 
$DayDiff = strtotime("2010-01-12")-strtotime("2009-12-30");
echo  date('z', $DayDiff)." Days";

this one should be precise and usable with PHP < 5.2

ITroubs
+1  A: 

Here is the sample code

$startDate = mktime(0,0,0,1,1,2010); 
$endDate = mktime(0,0,0,12,1,2010); 

$dateDiff = $date1 - $date2;
$fullDays = floor($dateDiff/(60*60*24));
echo "Differernce is $fullDays days"; 
Chinmayee
+3  A: 

If you are using PHP 5.3, you can use the new DateTime class:

$startDate = new DateTime("20101013");
$endDate = new DateTime("20101225");

$interval = $startDate->diff($endDate);

echo $interval->days . " until Christmas"; // echos 73 days until Christmas

If not, you will need to use strtotime:

$startDate = strtotime("20101013");
$endDate = strtotime("20101225");

$interval = $endDate - $startDate;
$days = floor($interval / (60 * 60 * 24));

echo $days . " until Christmas"; // echos 73 days until Christmas
lonesomeday
The new DateTime, DateTimeInterval, DateTimePeriod and DateTimeZone-classes just rock. I also made some experience with them. I think it's better than strtotime, because it considers leap-years, leap-seconts, etc. So +1 for you. I also gave an more detailed example in this post: http://stackoverflow.com/questions/3108591/calculate-number-of-hours-between-2-dates-in-php/3108800#3108800
faileN
Thank you, lonesomeday.
Francisc
A: 

Almost the same : http://stackoverflow.com/questions/2040560/how-to-find-number-of-days-between-two-dates-using-php. I think you can understand.

MatTheCat
+1  A: 
<?php   
 $time1=strtotime($startDate);
    $time2=strtotime($endDate);
    $daycount=floor(($time2-$time1)/ 86400);
?>
Paniyar
+1  A: 
<?php
function days($date1, $date2) {
    $date1 = strtotime($date1);
    $date2 = strtotime($date2);
    return ($date2 - $date1) / (24 * 60 * 60);
}
$date1 = '20100820';
$date2 = '20100930';
echo days($date1, $date2);
?>
Jichao
+1  A: 

The easiest way I have found to get the number of days between them is by converting the Start and End dates to Unix timestamps and doing an subtract on them.

Then if you want to format the date convert it back using the PHP date function.

etbal