基于日期时间差异的单独组数组

问题描述 投票:-1回答:1

我想从下面的数组中获取时间段为“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 
php date time
1个回答
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匹配

© www.soinside.com 2019 - 2024. All rights reserved.