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;$iDateInterval
可用于为日期计算创建新的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>';
}