用PHP计算2小时之间的差异

时间:2013-06-02 03:04:11

标签: php datetime time date-arithmetic

我有两次 - 例如 - 当前时间 - 08:24,日期是02/01/2013,格式为dd / mm / yyyy 我还有另一次在13:46,日期是2012年12月31日。那么,我如何使用PHP计算2小时之间的差异。 (即42.63小时) 提前谢谢。

7 个答案:

答案 0 :(得分:6)

将它们转换为时间戳值,然后减去以秒为单位得到差异。

$ts1 = strtotime(str_replace('/', '-', '02/01/2013 08:24'));
$ts2 = strtotime(str_replace('/', '-', '31/12/2012 13:46'));
$diff = abs($ts1 - $ts2) / 3600;

答案 1 :(得分:4)

另一种方法是使用PHP的与日期相关的类。以下示例使用DateTime::diff()获取DateInterval对象($interval)。然后,它使用区间的属性来计算区间中的总小时数。

$a = DateTime::createFromFormat('H:i d/m/Y', '08:24 02/01/2013');
$b = DateTime::createFromFormat('H:i d/m/Y', '13:46 31/12/2012');

$interval = $a->diff($b);
$hours    = ($interval->days * 24) + $interval->h
          + ($interval->i / 60) + ($interval->s / 3600);

var_dump($hours); // float(42.633333333333)

答案 2 :(得分:3)

我有一个简单的解决方案,试试这个 -

echo getTimeDiff("10:30","11:10");

function getTimeDiff($dtime,$atime)
    {
        $nextDay = $dtime>$atime?1:0;
        $dep = explode(':',$dtime);
        $arr = explode(':',$atime);
        $diff = abs(mktime($dep[0],$dep[1],0,date('n'),date('j'),date('y'))-mktime($arr[0],$arr[1],0,date('n'),date('j')+$nextDay,date('y')));
        $hours = floor($diff/(60*60));
        $mins = floor(($diff-($hours*60*60))/(60));
        $secs = floor(($diff-(($hours*60*60)+($mins*60))));
        if(strlen($hours)<2){$hours="0".$hours;}
        if(strlen($mins)<2){$mins="0".$mins;}
        if(strlen($secs)<2){$secs="0".$secs;}
        return $hours.':'.$mins.':'.$secs;
    }

答案 3 :(得分:1)

如果您将日期作为时间戳(如果需要,请使用strtotime),然后只需减去它们,可选择取绝对值,然后除以3600(一小时内的秒数)。容易^ _ ^

答案 4 :(得分:0)

我认为以下代码有助于了解如何使用PHP

计算时差
function date_diff($date_1 , $date_2 , $format) {
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);

    $diff = date_diff($datetime1, $datetime2);

    return $diff->format($format);
}

上述函数可用于计算两次和日期之间的差异。日期以输出格式的参数给出。

输出格式如下:

//&#39;%y年%%月份%d天%h小时%i分钟%s秒数&#39; =&GT; 1年3个月14天11小时49分36秒 //&#39;%y年%%月%d日&#39; =&GT; 1年3个月14天 //&#39;%m月%d日&#39; =&GT; 3月14日 //&#39;%d日%h小时&#39; =&GT; 14天11小时 //&#39;%d Day&#39; =&GT; 14天 //&#39;%h小时%i分钟%s秒&#39; =&GT; 11小时49分36秒 //&#39;%i分秒%秒&#39; =&GT; 49分钟36秒 //&#39;%h小时=&gt; 11个小时 //&#39;%a Days

答案 5 :(得分:0)

对于需要在HoursMinutes' AND 'Seconds”中找到两个日期/时间戳之间的差异的人,只需将其放在这里!

$futureDate_raw = '12/13/2018'; // This is your finish date.
$fdate = strtotime($futureDate_raw);

$hours   = (($fdate - time()) / 3600;
$mins    = (($fdate - time()) % 3600) / 60;
$seconds = ((($fdate- time()) % 3600) % 60);

答案 6 :(得分:0)

我发现这是找到时差的最简单方法,它总是对我有用

$timestamp1 = strtotime(date('Y-m-d H:i'));
$timestamp2 = strtotime("2020-04-05 18:00");

  $diff = abs($timestamp2 - $timestamp1)/(60*60);
echo $diff;