日期期间不显示 00:00

我为在公司工作的员工创建了一个考勤系统,我需要在添加记录时检查时间间隔。所以我必须创建一系列的时间。使用DatePeriod,我可以输出特定时间间隔内的小时数。当 00:00 处于两个不同的时间间隔时,它可以工作,但不会显示任何内容。

通常它应该输出以下范围:

  • 00:00

  • 01:00

  • 02:00

  • 03:00

  • 04:00

但什么也没显示。

<?php


    $a = '23:00';

    $b = '05:00';


    $period = new DatePeriod(

        new DateTime($a),

        new DateInterval('PT1H'),

        new DateTime($b),

        DatePeriod::EXCLUDE_START_DATE

    );

    foreach ($period as $date) {

        echo $date->format("H:i\n");

    }


?>


慕运维8079593
浏览 113回答 1
1回答

慕莱坞森

如果您转储传递给 DatePeriod 的日期,您将看到它们都是今天,因此您的开始日期在结束日期之后。在这种情况下,您的意思实际上是:给我今天 23:00 到明天 05:00 之间的几个小时 - 所以如果发生这种情况,只需在结束日期后添加 1 天即可。<?php&nbsp; &nbsp; $a = '23:00';&nbsp; &nbsp; $b = '05:00';&nbsp; &nbsp; $aDate = new DateTime($a);&nbsp; &nbsp; $bDate = new DateTime($b);&nbsp; &nbsp; if ($aDate > $bDate) {&nbsp; &nbsp; &nbsp; $bDate->add(new DateInterval('P1D'));&nbsp; &nbsp; }&nbsp; &nbsp; $period = new DatePeriod(&nbsp; &nbsp; &nbsp; &nbsp; $aDate,&nbsp; &nbsp; &nbsp; &nbsp; new DateInterval('PT1H'),&nbsp; &nbsp; &nbsp; &nbsp; $bDate,&nbsp; &nbsp; &nbsp; &nbsp; DatePeriod::EXCLUDE_START_DATE&nbsp; &nbsp; );&nbsp; &nbsp; foreach ($period as $date) {&nbsp; &nbsp; &nbsp; &nbsp; echo $date->format("H:i\n");&nbsp; &nbsp; }输出:00:0001:0002:0003:0004:00
打开App,查看更多内容
随时随地看视频慕课网APP