为了账号安全,请及时绑定邮箱和手机立即绑定

日期期间不显示 00:00

日期期间不显示 00:00

PHP
慕运维8079593 2023-08-11 15:57:40
我为在公司工作的员工创建了一个考勤系统,我需要在添加记录时检查时间间隔。所以我必须创建一系列的时间。使用DatePeriod,我可以输出特定时间间隔内的小时数。当 00:00 处于两个不同的时间间隔时,它可以工作,但不会显示任何内容。通常它应该输出以下范围:00:0001:0002:0003:0004: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");    }?>
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

如果您转储传递给 DatePeriod 的日期,您将看到它们都是今天,因此您的开始日期在结束日期之后。在这种情况下,您的意思实际上是:给我今天 23:00 到明天 05:00 之间的几个小时 - 所以如果发生这种情况,只需在结束日期后添加 1 天即可。


<?php


    $a = '23:00';

    $b = '05:00';


    $aDate = new DateTime($a);

    $bDate = new DateTime($b);


    if ($aDate > $bDate) {

      $bDate->add(new DateInterval('P1D'));

    }


    $period = new DatePeriod(

        $aDate,

        new DateInterval('PT1H'),

        $bDate,

        DatePeriod::EXCLUDE_START_DATE

    );

    foreach ($period as $date) {

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

    }

输出:


00:00

01:00

02:00

03:00

04:00


查看完整回答
反对 回复 2023-08-11
  • 1 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信