此代码在两次之间计算小时数 这样做了
上午6点零零分00秒 上午6时30分零零秒 7:00:00点 上午7点30分〇〇秒 上午08时00分○○秒 上午08时30分○○秒 ...... 下午10时30分零零秒
我该怎么做
$start = date_create('6:00:00AM');
$end = date_create('11:00:00PM');
$diff = date_diff($end, $start);
print_r($diff->h);
答案 0 :(得分:1)
或者,您可以使用DatePeriod来构建所需规范的日期列表,而不是迭代日期的比较并添加增量。
$start = date_create('6:00:00AM');
$end = date_create('11:00:00PM');
$interval = \DateInterval::createFromDateString('30 minutes');
$periods = new \DatePeriod($start, $interval, $end);
foreach ($periods as $date) {
echo $date->format('h:i:sA') . \PHP_EOL;
}
06:00:00AM
06:30:00AM
07:00:00AM
07:30:00AM
08:00:00AM
08:30:00AM
//..
10:30:00PM
由于\DateTime::diff()
不会在不同日期的日期之间显示总小时,因此您可以使用iterator_count
计算两个日期之间的小时数。所需间隔的DatePeriod
:
$start = date_create('6:00:00AM');
$end = date_create('11:00:00PM');
$interval = \DateInterval::createFromDateString('1 hour');
$periods = new \DatePeriod($start, $interval, $end);
echo iterator_count($periods) . ' hours';
17 hours
答案 1 :(得分:0)
<?php
$start = date_create('6:00:00AM');
$end = date_create('11:00:00PM');
$halfHour = new DateInterval('PT1800S');
while ($start < $end) {
print ($start->format('h:i:sA').PHP_EOL);
$start->add($halfHour);
}
?>
答案 2 :(得分:0)
创建2个Datetime对象和一个日期间隔对象,并在小于结束时迭代Datetime每次添加间隔。
$start = date_create('6:00:00AM');
$end = date_create('11:00:00PM');
$interval = new DateInterval('PT30M');
while ($start <= $end) {
echo $start->format('H:i:s');
$start->add($interval);
}