首页 > 解决方案 > PHP DatePeriod 在午夜之前和之后,只有时间,没有日期

问题描述

我需要在没有日期的两次之间找到 15 分钟的间隔,如果两次都在 00:00 之前,一切正常。我正在传递时间,例如17:0023:0001:30

午夜之后当然是另一天的问题,所以这就是它失败的原因。我想知道是否有办法找到间隔,因为结束时间可以是任何例如。在午夜之前或之后,因此添加真实日期可能并不理想,它只会在午夜之后几个小时而已。

$period = new DatePeriod(
    new DateTime("17:00"),
    new DateInterval('PT15M'),
    new DateTime("01:00")
    );

小提琴

不返回任何内容,任何帮助将不胜感激。

标签: phpdatetimeperiod

解决方案


因为您只使用时间部分,所以日期将自动设置为当天......这使得结束小于开始。

但是,如果您采取真正的日期(哪些并不重要)并选择第二天的 1'clock...

$period = new DatePeriod(
    new DateTime("1970-01-01 17:00"),
    new DateInterval('PT15M'),
    new DateTime("1970-01-02 01:00")
    );
    
foreach ($period as $date) {
    echo $date->format("H:i").' - ';
}

hth


推荐阅读