PHP date_diff返回错误的值来比较两个日期时间

时间:2017-07-10 06:08:29

标签: php

我发现这个post显示了如何获得两个日期之间的小时差异。

日期为: 2017-07-03 13:55:20和2017-07-04 21:17:44

当我尝试使用此代码时,它给了我错误的值:

$date1 = date_create('2017-07-03 13:55:20');

$date2 = date_create('2017-07-04 21:17:44');

$diff = date_diff($date1,$date2);

$hour = $diff->h;

returns 8 hours //incorrect

但这个给了我正确的价值:

$hourdiff = round((strtotime('2017-07-03 13:55:20') - strtotime('2017-07-04 21:17:44'))/3600);
returns 31 hours //correct

3 个答案:

答案 0 :(得分:3)

你必须走这条路:

<?php
$date1 = date_create('2017-07-03 13:55:20');
$date2 = date_create('2017-07-04 21:17:44');

$diff = date_diff($date1,$date2);

$hour = ($diff->d * 24) + $diff->h;
echo $hour;
  

演示: http://ideone.com/7SBfHn

date_diff函数为您提供如下区别:

             y  m  d  h  m  s
-----------------------------
Date1:    2017-07-03 13:55:20
             |  |  |  |  |  |
Diff:        0  0  1  8  0 24
             |  |  |  |  |  |
Date2:    2017-07-04 21:17:44

答案 1 :(得分:0)

您可以利用date_diff返回的对象的'format'函数。 (http://php.net/manual/en/function.date-diff.php

这是我的解决方案,利用格式功能 -

$date1 = date_create('2017-07-03 13:00:00');

$date2 = date_create('2017-07-04 21:17:44');

$diff = date_diff($date1,$date2);

$hour =( $diff->format('%d')*24 + $diff->format('%h')) . '.' . $diff->format('%i') . 'mins';

echo $hour; // output = '32.17mins'

答案 2 :(得分:0)

使用此,

$d1= new DateTime("2017-07-03 13:55:20"); 
$d2= new DateTime("2017-07-04 21:17:44");
$interval= $d1->diff($d2);
echo ($interval->days * 24) + $interval->h;