honkmaster Posted April 8, 2017 Share Posted April 8, 2017 Hi, I have two date and time stamps stored in my database, I'm using the below script to calculate the difference but whenever I'm getting an extra 1 hour added ?? Any ideas, Cheers Chris <?php $start = $row_rsComplete['quote_added']; $finish = $row_rsComplete['quote_complete']; $difference = ($finish - $start); $day = round(($difference % 604800) / 86400); $hours = round((($difference % 604800) % 86400) / 3600); $minutes = round(((($difference % 604800) % 86400) % 3600) / 60); echo $day." days"."<br/>"; echo $hours." hours"."<br/>"; echo $minutes." minutes"."<br/>"; ?> Link to comment Share on other sites More sharing options...
mac_gyver Posted April 8, 2017 Share Posted April 8, 2017 a) it would have been nice if you posted what the input data values were that produce the incorrect result. b) there aren't the same number of hours in each day, especially if you observe Daylight Savings Time in your time zone. c) if you use your database's or php's date/time functions to perform the calculation, it will probably take into account any DST change. Link to comment Share on other sites More sharing options...
honkmaster Posted April 8, 2017 Author Share Posted April 8, 2017 Hi, thanks for response, dateTime is stored as unix Link to comment Share on other sites More sharing options...
honkmaster Posted April 8, 2017 Author Share Posted April 8, 2017 Below is code with posted data, result is 1 hr 43 mins which is incorrect, start time is 13:12 and finish is 13:55 which is 43 mins <?php $start = '1491480732'; $finish = '1491483308'; $difference = ($finish - $start); $day = round(($difference % 604800) / 86400); $hours = round((($difference % 604800) % 86400) / 3600); $minutes = round(((($difference % 604800) % 86400) % 3600) / 60); echo $day." days"."<br/>"; echo $hours." hours"."<br/>"; echo $minutes." minutes"."<br/>"; ?> Link to comment Share on other sites More sharing options...
Jacques1 Posted April 8, 2017 Share Posted April 8, 2017 Rounding 0.7 hours yields 1 hour. This is how rounding works. If you want to cut off the decimal fraction, you need floor() and/or an integer type cast. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.