比如可以获取两个日期之间的所有月份、所有小时等
    直接看代码

    1. <?
    2. $start = new DateTime("2021-01-28");
    3. $end = new DateTime("2021-03-28");
    4. // 时间间距 这里设置的是一个月
    5. $interval = DateInterval::createFromDateString('1 month');
    6. $period = new DatePeriod($start, $interval, $end);
    7. foreach ($period as $k => $v) {
    8. echo $v->format("Y-m") . "\n";
    9. }

    结果为:

    2021-01
    2021-02
    
    <?
    $start = new DateTime("2021-01-28");
    $end = new DateTime("2021-03-28");
    // 时间间距 这里设置的是一个星期
    $interval = DateInterval::createFromDateString('1 week');
    $period = new DatePeriod($start, $interval, $end);
    $week = ['日', '一', '二', '三', '四', '五', '六'];
    foreach ($period as $k => $v) {
        echo $v->format("Y-m-d") . ' 周' . $week[date('w', $v->getTimestamp())] . "\n";
    }
    

    结果为:

    2021-01-28 周四
    2021-02-04 周四
    2021-02-11 周四
    2021-02-18 周四
    2021-02-25 周四
    2021-03-04 周四
    2021-03-11 周四
    2021-03-18 周四
    2021-03-25 周四
    
    <?
    $start = new DateTime("2021-01-28");
    $end = new DateTime("2021-02-15");
    // 时间间距 这里设置的是一天
    $interval = DateInterval::createFromDateString('1 day');
    $period = new DatePeriod($start, $interval, $end);
    $week = ['日', '一', '二', '三', '四', '五', '六'];
    foreach ($period as $k => $v) {
        echo $v->format("Y-m-d") . ' 周' . $week[date('w', $v->getTimestamp())] . "\n";
    }
    

    结果为:

    2021-01-28 周四
    2021-01-29 周五
    2021-01-30 周六
    2021-01-31 周日
    2021-02-01 周一
    2021-02-02 周二
    2021-02-03 周三
    2021-02-04 周四
    2021-02-05 周五
    2021-02-06 周六
    2021-02-07 周日
    2021-02-08 周一
    2021-02-09 周二
    2021-02-10 周三
    2021-02-11 周四
    2021-02-12 周五
    2021-02-13 周六
    2021-02-14 周日