Created
December 28, 2014 05:19
-
-
Save iforwms/d9f61f82ba6e4f40c040 to your computer and use it in GitHub Desktop.
PHP: Calculate Difference Between Timestamps
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// DIFFERENCE BETWEEN TWO TIMESTAMPS | |
// Time format is UNIX timestamp or PHP strtotime compatible strings | |
function dateDiff($time1, $time2, $precision = 6) | |
{ | |
// If not numeric then convert texts to unix timestamps | |
if (!is_int($time1)) { | |
// $time1 = strtotime($time1); | |
} | |
if (!is_int($time2)) { | |
// $time2 = strtotime($time2); | |
} | |
// If time1 is bigger than time2 | |
// Then swap time1 and time2 | |
if ($time1 > $time2) { | |
$ttime = $time1; | |
$time1 = $time2; | |
$time2 = $ttime; | |
} | |
// Set up intervals and diffs arrays | |
$intervals = array('year', 'month', 'day', 'hour', 'minute', 'second'); | |
$diffs = array(); | |
// Loop thru all intervals | |
foreach ($intervals as $interval) { | |
// Create temp time from time1 and interval | |
$ttime = strtotime('+1 '.$interval, $time1); | |
// Set initial values | |
$add = 1; | |
$looped = 0; | |
// Loop until temp time is smaller than time2 | |
while ($time2 >= $ttime) { | |
// Create new temp time from time1 and interval | |
$add++; | |
$ttime = strtotime("+".$add." ".$interval, $time1); | |
$looped++; | |
} | |
$time1 = strtotime("+".$looped." ".$interval, $time1); | |
$diffs[$interval] = $looped; | |
} | |
$count = 0; | |
$times = array(); | |
// Loop thru all diffs | |
foreach ($diffs as $interval => $value) { | |
// Break if we have needed precission | |
if ($count >= $precision) { | |
break; | |
} | |
// Add value and interval | |
// if value is bigger than 0 | |
if ($value > 0) { | |
// Add s if value is not 1 | |
if ($value != 1) { | |
$interval .= "s"; | |
} | |
// Add value and interval to times array | |
$times[] = $value." ".$interval; | |
$count++; | |
} | |
} | |
// Return string with times | |
return implode(", ", $times); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment