我希望以下数组中的时隙为“ FROM DATE”和“ To DATE”。
基本上,我想检查是否有2小时间隔,然后创建“起始日期和结束日期”的新组。
$finaltime = array();
for($i=0; $i<count($timeslots);$i++){
$startdate = $timeslots[$i];
$result_set = $this->Calendar_model->AllEventTimeSlot($user,$startdate,$conver_end_date);
echo $result_set;
if($result_set == 0){
$finaltime[] = $timeslots[$i];
}
}
I have an array as follows:
Array
(
[0] => 2019-04-01 00:00:00
[1] => 2019-04-07 06:00:00
[2] => 2019-04-07 08:00:00
[3] => 2019-04-07 10:00:00
[4] => 2019-04-07 12:00:00
[5] => 2019-04-07 14:00:00
[6] => 2019-04-07 16:00:00
[7] => 2019-04-07 18:00:00
[8] => 2019-04-07 20:00:00
[9] => 2019-04-07 22:00:00
[10] => 2019-04-08 00:00:00
[11] => 2019-04-08 02:00:00
[12] => 2019-04-08 04:00:00
[13] => 2019-04-08 06:00:00
[14] => 2019-04-08 08:00:00
[15] => 2019-04-08 10:00:00
[16] => 2019-04-08 12:00:00
[17] => 2019-04-08 14:00:00
[18] => 2019-04-08 16:00:00
[19] => 2019-04-08 18:00:00
[20] => 2019-04-08 20:00:00
[21] => 2019-04-08 22:00:00
)
预期结果:
[0] => 2019-04-01 00:00:00忽略此内容,因为不在2小时内。
Array
(
[0] => Array
(
[formdate] => 2019-04-07 06:00:00
[todate] => 2019-04-07 06:00:00
)
[1] => Array
(
[formdate] => 2019-04-07 10:00:00
[todate] => 2019-04-07 12:00:00
)
)
... and soo on
答案 0 :(得分:0)
最简单的方法是在PHP中使用DateTime对象。
$finaltime = [];
foreach($timeslots as $key => $value){
//check for another date in the future to compare with
if(isset($timeslots[$key+1])){
$start = new DateTime($value);
$end = new DateTime($timeslots[$key+1]);
$diff = $start->diff($end);
// I've excluded seconds so just checking for 2 hours and 0 minutes
if($diff->format("%H:%I") == "02:00"){
$finaltime[] = ['fromdate' => $value, 'todate' => $timeslots[$key+1]];
}
}
}
如果您要比较不同的日期,那么您将需要扩展此$diff->format("%H:%I")
以包括天差。
否则2019-08-01 06:00:00将与2019-08-02 08:00:00匹配