php添加15分钟的时间间隔到当前时间循环到午夜

时间:2018-04-17 05:53:54

标签: php

我需要将15分钟添加到当前时间,直到当天的午夜。这应该以下面的格式显示

11:15am
11:30am
11:45am

并且它不会,

11:25am
11:40am
11:55am

我的代码是

$start =strtotime(date("d-m-Y h:i:s"));//strtotime('6:00am');
//echo $start;
//$end =strtotime('midnight');
$end = strtotime('12:00');//
$range = array();
while ($start <= $end)
{
echo date('h:ia',$start )."</br>";
$start = strtotime('+15 minutes',$start);
}

以上代码结果,

11:28am
11:43am
11:58am

问题1:

如何在今天午夜结束时间?

当我尝试strtotime('midnight')时,它会返回空数据。

问题2:

如何将舍入时间显示为最接近的四分之一?

2 个答案:

答案 0 :(得分:1)

您可以使用24:00'tomorrow midnight'来获得下一个午夜。您的代码使用12:00,即#34;此中午&#34;。

$min = round(date("i") / 15) * 15;
$start = strtotime(date("Y-m-d H:$min:00"));
$end = strtotime('24:00');
$range = array();
while ($start <= $end)
{
    echo date('h:ia',$start )."</br>";
    $start = strtotime('+15 minutes',$start);
}

输出:

08:15am
08:30am
...
11:30pm
11:45pm
12:00am

如果您不想包含&#34; 12:00 am&#34;,则可以将<=更改为<

while ($start < $end)

答案 1 :(得分:0)

问题是您的代码必须完全11:00启动才能使after 15 mins成为11:15

您可以将开始时间设为11:00:00以正确设置时间(demo):

$start =strtotime(date("h:00"));
$end = strtotime('12:00');
$range = array();

while ($start <= $end)
{
    $range[] = date('h:ia',$start );
    $start = strtotime('+15 minutes',$start);
}

var_dump($range);