Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建时间增加15分钟的循环_Php_Date_Time - Fatal编程技术网

Php 创建时间增加15分钟的循环

Php 创建时间增加15分钟的循环,php,date,time,Php,Date,Time,我正在尝试创建一个循环,该循环将输出以下内容: 08:00 08:15 08:30 08:45 09:00 09:15 09:30 09:45 我需要从08:00到17:00 以下是我目前的代码: function echo_datelist ($i, $j, $day, $month, $year) { $time = str_pad($i, 2, '0', STR_PAD_LEFT).':'.str_pad($j, 2, '0', STR_PAD_LEFT);

我正在尝试创建一个循环,该循环将输出以下内容:

08:00
08:15
08:30
08:45
09:00
09:15
09:30
09:45
我需要从08:00到17:00

以下是我目前的代码:

function echo_datelist ($i, $j, $day, $month, $year)
{
    $time = str_pad($i, 2, '0', STR_PAD_LEFT).':'.str_pad($j, 2, '0', STR_PAD_LEFT);            
    $date = strtotime("$month $day $year $time:00");
    $sql = mysql_query("select b.room_type, c.name from bookings as b, customers as c where b.the_date='$date' and b.id_customer=c.id");

    echo $time.'<br />';
}

for ($i = 8; $i <= 16; $i++)
{
    for ($j = 0; $j <= 45; $j+=15)
        echo_datelist($i, $j, $day, $month, $year);

    echo_datelist(17, 0, $day, $month, $year);
}

将该行移动到最外层的for-loop后面。

您需要将最后一行移动到外层for-loop之外

for ($i = 8; $i <= 16; $i++){
  for ($j = 0; $j <= 45; $j+=15){
    //inside the inner loop
    echo_datelist($i, $j, $day, $month, $year);
  }
  //inside the outer loop
}
//outside the outer loop
echo_datelist(17, 0, $day, $month, $year);
而不是:

For each hour between 8 and 16
  For each 15 minute interval
    Echo the time
  End
End
Echo 17:00

我会考虑在一天中的所有小时内执行SQL查询,然后在时间内挑选出SQL查询,否则你将对每15分钟间隔进行SQL查询(37个用你的示例数据进行查询)

看起来对我来说不必要复杂。下面将打印出您想要的内容。大概可以对其进行调整,以便在代码中使用。对于混乱的结束条件,我很抱歉

$min=array("00","15","30","45");

for($i=8;$i<17;$i++)
  foreach ($min as $v)
    print "$i:$v\n";
print "17:00\n";
$min=数组(“00”、“15”、“30”、“45”);

对于($i=8;$i和PHP5>=5.3.0,您可以使用
DateTime::add
,请参阅:

我正在处理一个类似的问题,但开始/结束时间是可变的

这可能需要一点改进,但我不能破坏它

开始时你需要提供的只是日期和时间

$day = "10/14/2011";

$startTime = date(strtotime($day." 16:00"));
$endTime = date(strtotime($day." 19:15"));

$timeDiff = round(($endTime - $startTime)/60/60);

$startHour = date("G", $startTime);
$endHour = $startHour + $timeDiff; 

for ($i=$startHour; $i <= $endHour; $i++)
{
     for ($j = 0; $j <= 45; $j+=15)
        {
                $time = $i.":".str_pad($j, 2, '0', STR_PAD_LEFT);

                echo (date(strtotime($day." ".$time)) <= $endTime) ? date("g:i", strtotime($day." ".$time))."<br>" : "";
        }
}
$day=“10/14/2011”;
$startTime=日期(标准时间($day.“16:00”);
$endTime=日期(标准时间($day.“19:15”);
$timeDiff=整轮($endTime-$startTime)/60/60);
$startHour=日期(“G”,$startTime);
$endHour=$startHour+$timeDiff;

对于($i=$startHour;$i也可以使用range函数完成

<?php
date_default_timezone_set("Europe/London");
$range=range(strtotime("08:00"),strtotime("17:00"),15*60);
foreach($range as $time){
        echo date("H:i",$time)."\n";
}
?>

因此,您没有循环,它只是为您生成一个数组(我的循环只是在格式化时将其打印出来)

我这里的简单逻辑

   $start=strtotime('00:00');
   $end=strtotime('23:30');

    for ($i=$start;$i<=$end;$i = $i + 15*60)
    {

     //write your if conditions and implement your logic here

     echo date('g:i A',$i).'<br>';

    }
$start=strottime('00:00');
$end=strottime('23:30');

对于($i=$start;$i
DateInterval
可用于为日期计算创建新的
DateInterval
对象,并在任何脚本中使用。在所有日期和时间计算的高级PHP面向对象样式中,此格式非常有用

查看以下链接:


将您最后的
echo_日期列表
呼叫移到$i的
之外
loopModulo似乎更好:
printf(“%d:%02d\n”,(int)$i/60,$i%60)
这是最好的/最佳的变体,TNX非常好!在我看来,时区在这里毫无用处。这使事情变得非常简单,您也不必担心上午/下午和12:00的问题,谢谢
for($i=8*60;$i<=17*60;$i+=15)
  print floor($i/60) . ":" . ($i/60-floor($i/60))*60 . "\n";
$day = "10/14/2011";

$startTime = date(strtotime($day." 16:00"));
$endTime = date(strtotime($day." 19:15"));

$timeDiff = round(($endTime - $startTime)/60/60);

$startHour = date("G", $startTime);
$endHour = $startHour + $timeDiff; 

for ($i=$startHour; $i <= $endHour; $i++)
{
     for ($j = 0; $j <= 45; $j+=15)
        {
                $time = $i.":".str_pad($j, 2, '0', STR_PAD_LEFT);

                echo (date(strtotime($day." ".$time)) <= $endTime) ? date("g:i", strtotime($day." ".$time))."<br>" : "";
        }
}
<?php
date_default_timezone_set("Europe/London");
$range=range(strtotime("08:00"),strtotime("17:00"),15*60);
foreach($range as $time){
        echo date("H:i",$time)."\n";
}
?>
   $start=strtotime('00:00');
   $end=strtotime('23:30');

    for ($i=$start;$i<=$end;$i = $i + 15*60)
    {

     //write your if conditions and implement your logic here

     echo date('g:i A',$i).'<br>';

    }