使用 DatePeriod 和 DateInterval 将间隔中的日期映射到所需的格式

问题描述

我正在尝试使用与给定间隔对应的日期构建一个数组。

问题是我需要遵守一个约定,即一天介于 00:00:0023:59:59 之间。

到目前为止我写了这段代码

$start = new DateTime('2020-01-01');
$end = new DateTime('2020-01-03');
$interval = new DateInterval('P1D');
$result = [];

if ($start->getTimestamp() < $end->getTimestamp()) {
    $period = new DatePeriod(
        $start->setTime(0,0),$interval,$end->setTime(23,59,59)
    );

    foreach ($period as $date) {
        array_push($result,$date->format("Y-m-d H:i:s"));
    }
}

输出如下:

Array
(
    [0] => 2020-01-01 00:00:00
    [1] => 2020-01-02 00:00:00
    [2] => 2020-01-03 00:00:00
)

但是想要的输出是这个:

Array
(
    [0] => 2020-01-01 00:00:00
    [1] => 2020-01-01 23:59:59
    [2] => 2020-01-02 00:00:00
    [3] => 2020-01-02 23:59:59
    [4] => 2020-01-03 00:00:00
    [5] => 2020-01-03 23:59:59
)

是否有可能通过利用 DatePeriodDateInterval 来实现这个结果,或者我应该向 $result 数组推送两次,第一次使用 00:00:00 日期和第二次与23:59:59

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)