繁体   English   中英

一小时前的一个小时内获取前八个季度

[英]Get the previous 8 quarters in an hour, an hour ago

我想做的是在一小时前一个小时内显示过去8个季度。

我已经有这个了:

<?php
    echo date('d-m-Y H:i:s', strtotime('-1 hour'));
?>

例如:
现在是14:46(2:46 PM),所以我想要的是:

13:45
13:30
13:15
13:00
12:45
12:30
12:15
12:00

我该怎么办?

<?php
$hour = date('G',(time()-(60*60)));
if (date('i') < 15)
    $min = array('00','45','30','15');
elseif (date('i') < 30)
    $min = array('15','00','45','30');
elseif (date('i') < 45)
    $min = array('30','15','00','45');
else
    $min = array('45','30','15','00');
for ($i=0;$i<=8;$i++) {
    if ($min[$i%4] == 45) {
        if ($hour == 0)
            $hour = 23;
        else 
            $hour--;
    }
    echo $hour.':'.$min[$i%4];
    echo '<br />';
}

现在可以工作,但是我还没有进一步测试。

当地时间:15:06

输出:

14:00
13:45
13:30
13:15
13:00
12:45
12:30
12:15
12:00

要解决此问题,您需要弄清楚什么时候是最后一个季度。 然后,就像从那里回来一样简单。 这是我的处理方式:

$minute = idate('i');
$qdiff = $minute % 15;
$lastQuarter = time() - $qdiff*60;
echo date('Y-m-d H:i', $lastQuarter);

尝试弄清楚我的代码在做什么。 尤其要学习如何使用运算符,因为它对于大量数字问题非常有用!

或另一种方式,只是我很快将它们组合在一起:

function quarters($date) 
{
    $date = new DateTime($date);
    $date->modify("-1 hour");
    $quarters = array()
    for($i = 0; $i<=7; $i++)
    {
        $nearestQuarter =  floor($date->format("i") / 15) * 15;
        if($i == 0)
        {
            $minuteDiff  = (int) $nearestQuarter - $date->format("i");
            $date->modify(sprintf("%s minutes",$minuteDiff));
        }
        else
        {
            $date->modify("-15 minutes");
        }
        $quarters[] = $date->format("H:i"); 
    }
    return $quarters;
}
var_dump(quarters("2011-12-07 14:46:00"));

输出:

array(8) {
  [0]=>
  string(5) "13:45"
  [1]=>
  string(5) "13:30"
  [2]=>
  string(5) "13:15"
  [3]=>
  string(5) "13:00"
  [4]=>
  string(5) "12:45"
  [5]=>
  string(5) "12:30"
  [6]=>
  string(5) "12:15"
  [7]=>
  string(5) "12:00"
}

我建议它不需要太多的代码即可完成所需的工作:

$t = time() - 60 * 60;
$t -= $t % (60 * 15);

for ($i = 0; $i < 8; $i++, $t -= (60 * 15)) {
  echo date('H:i', $t), "\n";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM