PHP使用循环为时间增加45分钟

PHP使用循环为时间增加45分钟,php,time,Php,Time,我正在准备预约脚本,以便输入访问开始时间和结束时间,如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;

我正在准备预约脚本,以便输入访问开始时间和结束时间,如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++;
}    
直到最后一小时。但是我不知道这是怎么回事。

正如在类似的问题中已经提到的,您可以使用PHP中的类在开始和结束时间之间每45分钟迭代一次:

:


你读过PHP的吗?(特别是)这一切都在一个类中:-您设置开始和结束时间(如您有:9&20或11&23)和间隔(如您有:45分钟),您就完成了。@hakre谢谢谢谢谢谢谢谢,上帝保佑您。代码最初由用户1281385编写,您需要感谢他。您还应该看到,这个问题以前已经得到了回答,可能您应该更彻底地了解一下,任何PHP日期/时间问题都已经得到了回答。相信我。多亏了他,下次我会更加小心的,再次谢谢。这确实是正确的方法(比我的方法好多了)。因此,+1。和@hakre,nice edit:)若用户使用使用DST的时区,问题可能会出现。快速修复方法是设置不使用DST的时区,如。
09:00
09:45
10:30
11:15
12:00
<?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