Php DatePeriod不显示00:00
我为在公司工作的员工创建考勤系统,在添加记录时需要检查时间间隔。所以我必须创建一个小时数组。使用Php DatePeriod不显示00:00,php,Php,我为在公司工作的员工创建考勤系统,在添加记录时需要检查时间间隔。所以我必须创建一个小时数组。使用DatePeriod,我输出特定时间间隔内的小时数。当00:00处于两个不同的时间间隔时,它可以工作,但不显示任何内容 通常,它应输出以下范围: 00:00 01:00 02:00 03:00 04:00 但什么也看不出来 <?php $a = '23:00'; $b = '05:00'; $period = new DatePeriod( new
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");
}
?>
谢谢如果您转储传递给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");
}
var_转储期间。。。您仅使用时间初始化DateTime,因此它使用当前日期。然后05:00是23:00之前。编辑:为什么不将DatePeriod仅用于start和$recurrences?谢谢您的回答。现在我明白了
00:00
01:00
02:00
03:00
04:00