我正在准备一个预约脚本,用于输入访问开始时间和结束时间,如09:00和20:00,每个访问时间为45分钟。
我想在循环中从开始时间到结束时间添加45分钟。但是在互联网上的样本我无法做到。
访问时间是动态的我的意思是它可能是09:00-20:00或11:00-23:00等。
我正在尝试的确切解决方案是:
$visit_start = '09:00';
$visit_end = '20:00';
$difference = $visit_end - $visit_start;
$i = 1;
while( $i <= $difference )
{
print $visit_hour_list = $visit_start + 45;
$i++;
}
打印出来就像:
09:00
09:45
10:30
11:15
12:00
直到结束时刻。但我不知道它是如何起作用的。
答案 0 :(得分:10)
在类似问题answered中已经"How can I get a range of dates in php?",您可以使用PHP中的DatePeriod
类在开始和结束时间之间每隔45分钟迭代一次:< / p>
Demo:
<?php
/**
* PHP add 45 Minutes to a Time with Loop
*
* @link https://stackoverflow.com/a/19399907/367456
*/
$begin = new DateTime("09:00");
$end = new DateTime("20:00");
$interval = DateInterval::createFromDateString('45 min');
$times = new DatePeriod($begin, $interval, $end);
foreach ($times as $time) {
echo $time->format('H:i'), '-',
$time->add($interval)->format('H:i'), "\n"
;
}
输出:
09:00-09:45
09:45-10:30
10:30-11:15
11:15-12:00
12:00-12:45
12:45-13:30
13:30-14:15
14:15-15:00
15:00-15:45
15:45-16:30
16:30-17:15
17:15-18:00
18:00-18:45
18:45-19:30
19:30-20:15