试图找出PHP中日期之间的差距

时间:2017-08-23 05:36:58

标签: php date

我正试图找出日期之间的差距,例如:

$arrayTest = (
              array('from'=>'2017-07-10 15:22:45', 'to'=>'2017-07-11 16:22:46'),
              array('from'=>'2017-07-11 16:22:47', 'to'=>'2017-08-05 07:10:09'),
              array('from'=>'2017-08-05 07:10:10', 'to'=>'2017-09-22 09:25:12'),
              array('from'=>'2017-09-22 09:25:15', 'to'=>'2017-10-18 08:13:58'),
              array('from'=>'2017-10-18 08:13:58', 'to'=>'2017-11-29 13:29:12')
);

在此示例中,来自(2017-09-22 09:25:15)的第4行比第3行(2017-09-)多3秒22 09:25:12)我想最好的方法是转换为时间戳 strtotime(),但我有点困惑:如何检查From-> To ... if的组的最佳方式不知何故,两者之间存在差距?

输出:对于这种情况,只返回1(或间隙数),因为有一个间隙。 如果所有句点连接并且没有遗漏任何“space”,则返回0.

1 个答案:

答案 0 :(得分:3)

你需要循环并使用strtotime。

$arr = array(
          array('from'=>'2017-07-10 15:22:45', 'to'=>'2017-07-11 16:22:46'),
          array('from'=>'2017-07-11 16:22:47', 'to'=>'2017-08-05 07:10:09'),
          array('from'=>'2017-08-05 07:10:10', 'to'=>'2017-09-22 09:25:12'),
          array('from'=>'2017-09-22 09:25:15', 'to'=>'2017-10-18 08:13:58'),
          array('from'=>'2017-10-18 08:13:58', 'to'=>'2017-11-29 13:29:12')
);
$gap = false;
For($i=0; $i<count($arr)-1; $i++){ //I count to -1 due to $i+1 in the calculation below
    $diff = strtotime ($arr[$i+1]['from']) - strtotime ($arr[$i]['to']);
    If($diff >1){ // if there is more than one second gap
        $gap = true;
        Echo "key " . $i . " to " . ($i+1) .". Missing " .$diff . " seconds";
    }
}

https://3v4l.org/pNviX