Мне нужен временной интервал как «ОТ ДАТЫ» И «ДО ДАТЫ» из следующего массива.
в основном я хочу проверить, есть ли 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
Чтобы помочь вам с вашей конкретной проблемой, нам нужны дополнительные сведения, которые точно подчеркнут, где вы застряли.
Самый простой способ - использовать объект DateTime в PHP.
$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.
Что вы уже пробовали?