Link to home
Start Free TrialLog in
Avatar of zoscoit
zoscoitFlag for Saudi Arabia

asked on

php datetime difference

Dear All
I want to calculate the difference days between two dates,  then I want to use function ceiling (ceil) in the end.
but I found strange case , please copy the code and see the result for both samples, the difference only between these two samples I changed the month
both samples it should give me same result.
what is my mistake in this code ?
what is the best way to calculate the difference days between two dates?



<style type="text/css">table, td {border: 1px solid black;border-collapse: collapse;padding: 5px;}</style>
<?php 
$from_time1 = strtotime("2014-10-22 17:00:00");
$to_time1   = strtotime("2014-10-26 16:55:00");
$from_time2 = strtotime("2014-11-22 17:00:00");
$to_time2   = strtotime("2014-11-26 16:55:00");
?> 
 <TABLE>
 	<tr>
 	<td> No#</td>
 	<td> From Date Time</td>
 	<td> To  Date Time</td>
 	<td> Result </td>
 	<td> Ceil() </td>
 	</tr>
 	<tr>
 	<td> 1 </td>
 	<td> <?php echo "2014-10-22 17:00:00"; ?> </td>
 	<td> <?php echo "2014-10-26 16:55:00"; ?> </td>
 	<td> <?php echo  (($to_time1-$from_time1) / 86400 ). " Days"; ?> </td>
 	<td> <?php echo  Ceil(($to_time1-$from_time1) / 86400 ). " Days"; ?> </td>
 	</tr>
 	<tr>
 	<td> 2 </td>
 	<td> <?php echo "2014-11-22 17:00:00"; ?> </td>
 	<td> <?php echo "2014-11-26 16:55:00"; ?> </td>
 	<td> <?php echo  (($to_time2-$from_time2) / 86400 ). " Days"; ?> </td>
 	<td> <?php echo  Ceil(($to_time2-$from_time2) / 86400 ). " Days"; ?> </td>
 	</tr>
 </TABLE>

Open in new window

Avatar of Julian Hansen
Julian Hansen
Flag of South Africa image

I get the same answers for both (see below)User generated image - what should I be seeing?
If all you are wanting is the days difference then use the date_diff function
This question and many others about Date/Time processing is addressed in the article here:
https://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_201-Handling-date-and-time-in-PHP-and-MySQL.html

To clarify, when you want the differences between two dates, you probably do not want to take the time of day into account.  It might seem intuitive that you can just say a day has 86,400 seconds (60*60*24) but that is not true on at least two days of the year if you perform your calculations in a zone that uses daylight savings time.  And there are leap years, leap seconds, etc., to further complicate things.  So use the built-in functions as much as possible and avoid making the computations yourself.
Avatar of zoscoit

ASKER

User generated imageI have this result why ?
ASKER CERTIFIED SOLUTION
Avatar of Ray Paseur
Ray Paseur
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of zoscoit

ASKER

Gary 2014-11-03 at 19:03:56

Please make it simple and show me how?


 
Ray Paseur 2014-11-03 at 19:05:46

what is you mean by the built-in functions
Avatar of zoscoit

ASKER

What are your timezone settings?
User generated imageBut actually I am in Arabia Time Zone (UTC+03:00)
Avatar of zoscoit

ASKER

it solved by add one line in php file

date_default_timezone_set("Asia/Riyadh");

Open in new window

Avatar of zoscoit

ASKER

add one line to php file
date_default_timezone_set("Asia/Riyadh");