Function to get the difference between 2 datetimes
Returns an array containing a string with a textual reprezentation of the difference, and separately; the days, hours, minutes, seconds, total hours, total minutes, and total seconds (see in the examples presented bellow)./* Function that returns the difference between two date-time $start / $end can be in Unix Timestamp, or string containing about any English textual datetime description Returns an array containing a string with a textual reprezentation of the difference, and separately: the days, hours, minutes, seconds, total hours, total minutes, and total seconds */ function diffDateTime($start, $end) { // PHP-MySQL Course - http://coursesweb.net/php-mysql/ // sets to use $start and $end as Unix Timestamp if(!is_int($start)) $start = strtotime($start); if(!is_int($end)) $end = strtotime($end); // if the difference is negative, the hours are from different days, and adds 1 day (in sec.) $diff = ($end >= $start) ? $end - $start : 86400 + $end - $start; // define the number of days, hours, minutes and seconds in difference $d = floor($diff / 86400); $h = floor(abs($diff - $d*86400)/3600); $m = floor(abs($diff - $d*86400 - $h*3600)/60); $s = $diff % 60; // sets the words, singular or plural $dstr = ($d == 1) ? ' day ' : ' days '; $hstr = ($h == 1) ? ' hour ' : ' hours '; $mstr = ($m == 1) ? ' minute ' : ' minutes '; $sstr = ($s == 1) ? ' second ' : ' seconds '; // setings for the string added in textual reprezentation of the difference $sdiff_d = ($d != 0) ? $d.$dstr : ''; $sdiff_h = ($h != 0) ? $h.$hstr : ''; $sdiff_m = ($m != 0) ? $m.$mstr : ''; return array( 'diff' => $sdiff_d. $sdiff_h. $sdiff_m. $s.$sstr, 'days' => $d, 'hours'=>$h, 'min'=>$m, 'sec'=>$s, 'totalhours' => floor($diff/3600), 'totalmin' => floor($diff/60), 'totalsec'=>$diff ); }- Examples usage diffDateTime() function, with various date-time formats:
<?php // Here adds the diffDateTime() function $df1 = diffDateTime('8:35:6', '8:55:34'); // difference between 2 times (in hours:min:sec) $df2 = diffDateTime('07/19/2012 14:10:00', 'now'); // difference between a previous date-time and now $df3 = diffDateTime('25 August 2012 14:10:00', '18-09-2012 08:25:00'); // difference between 2 date-times $df4 = diffDateTime(1348012438, 1348029429); // difference between 2 date-time, with Timestamp // Test, see the array with data for each difference var_export($df1); /* array ( 'diff' => '20 minutes 28 seconds ', 'days' => 0, 'hours' => 0, 'min' => 20, 'sec' => 28, 'totalhours' => 0, 'totalmin' => 20, 'totalsec' => 1228 ) */ var_export($df2); /* array ( 'diff' => '61 days 16 hours 9 minutes 20 seconds ', 'days' => 72, 'hours' => 16, 'min' => 9, 'sec' => 20, 'totalhours' => 1744, 'totalmin' => 104649, 'totalsec' => 6278960 ) */ var_export($df3); /* array ( 'diff' => '23 days 18 hours 15 minutes 0 seconds ', 'days' => 23, 'hours' => 18, 'min' => 15, 'sec' => 0, 'totalhours' => 570, 'totalmin' => 34215, 'totalsec' => 2052900 ) */ var_export($df4); /* array ( 'diff' => '4 hours 43 minutes 11 seconds ', 'days' => 0, 'hours' => 4, 'min' => 43, 'sec' => 11, 'totalhours' => 4, 'totalmin' => 283, 'totalsec' => 16991 ) */ ?>
0 comments:
Post a Comment