我们如何在PHP中分割日期?

Sar*_* TS 5 php

我们如何使用PHP分割日期?PHP中是否有内置函数?

2016-11-01 10:00:00 till 2016-11-03 18:00:00
Run Code Online (Sandbox Code Playgroud)

我需要将上述日期分成所需日期: -

2016-11-01 10:00:00 till 23:59:59
2016-11-02 00:00:00 till 23:59:59
2016-11-03 00:00:00 till 18:00:00
Run Code Online (Sandbox Code Playgroud)

Max*_*Max 5

据我所知,PHP没有提供这样的内置功能.

但是您可以使用以下DateTime对象轻松实现此目的:

$interval = '2016-11-01 10:00:00 till 2016-11-03 18:00:00';
$dates = explode(' till ', $interval);

if(count($dates) == 2) {
    $current = $begin = new DateTime($dates[0]);
    $end = new DateTime($dates[1]);

    $intervals = [];

    // While more than 1 day remains
    while($current->diff($end)->format('%a') >= 1) {

        $nextDay = clone $current;
        $nextDay->setTime(23,59,59);

        $intervals []= [
            'begin' => $current->format('Y-m-d H:i:s'),
            'end'   => $nextDay->format('Y-m-d H:i:s'),
        ];
        $current = clone $nextDay;
        $current->setTime(0,0,0);
        $current->modify('+1 day');
    }

    // Last interval : from $current to $end
    $intervals []= [
        'begin' => $current->format('Y-m-d H:i:s'),
        'end'   => $end->format('Y-m-d H:i:s'),
    ];

    print_r($intervals);
}
Run Code Online (Sandbox Code Playgroud)