繁体   English   中英

PHP:返回日期范围的日期时间开始和日期时间结束

[英]PHP: Return date time start and date time end for a date range

我需要为给定范围内的每个日期返回日期时间开始和日期时间结束:

输入将是:

$start = '2010-11-07 10:00:00';
$end   = '2010-11-09 19:00:00';

预期输出将是:

Array
(
    Array
        (
            '2010-11-07',
            '2010-11-07 10:00:00' ,
            '2010-11-08 00:00:00'
        )

    Array
        (
            '2010-11-08' ,            
            '2010-11-08 00:00:00' ,
            '2010-11-09 00:00:00'
        )

    Array
        (
            '2010-11-09' ,
            '2010-11-09 00:00:00' ,
            '2010-11-09 19:00:00'
        )

)

我设法使用此线程将时间范围划分为不同的日子: https : //stackoverflow.com/a/4312630/3132858

但是,我无法获得每个日期的开始和结束时间。 任何帮助将不胜感激!

这是一个带有我的代码的PHP Fiddle

解决此问题的一种方法是简单地遍历开始/结束日期之间的天数:

function getRange($start, $end) {
    $range = [];
    $start_date = \DateTime::createFromFormat('Y-m-d H:i:s', $start);
    $end_date = \DateTime::createFromFormat('Y-m-d H:i:s', $end);
    $diff = $end_date->diff($start_date);
    for($i = 0; $i <= $diff->days; $i++) {
        $event_end = clone $start_date;
        $event_end->add(new \DateInterval("P1D"));
        if ($event_end > $end_date) {
            $range[] = [
                $start_date->format('Y-m-d'),
                $start_date->format('Y-m-d 00:00:00'),
                $end_date->format('Y-m-d H:i:s'),
            ];
            break;
        }
        $range[] = [
            $start_date->format('Y-m-d'),
            $i > 0 ? $start_date->format('Y-m-d 00:00:00') :  $start_date->format('Y-m-d H:i:s'),
            $event_end->format('Y-m-d 00:00:00')

        ];
        $start_date->add(new \DateInterval("P1D"));
    }
    return $range;
}

在此处查看它的运行情况: https : //3v4l.org/e85OM

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM