【问题标题】:PHP date_diff returns wrong value for comparing two date-timePHP date_diff 返回错误值以比较两个日期时间
【发布时间】:2017-07-10 06:08:28
【问题描述】:

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

日期是:2017-07-03 13:55:20 AND 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

【问题讨论】:

  • $diff 是这里的一个对象,它给出了年、月、周、日、小时、分钟的差异,你在这里只访问小时,打印完整的 $diff 对象,然后你会得到正确的值
  • @RAUSHANKUMAR 所以我还必须将天数转换为小时数才能获得完整的小时差?

标签: php


【解决方案1】:

你必须走这条路:

<?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

【讨论】:

  • 我明白了,所以我也必须寻找这一天。也许这就是为什么它适用于我的其他日期范围,因为差异只有 22 小时。谢谢你。
【解决方案2】:

您可以利用 date_diff 返回的对象的“格式”功能。 (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'

【讨论】:

    【解决方案3】:

    使用这个,

    $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;
    

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多