我正试图找出日期之间的差距,例如:
$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.
答案 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";
}
}