您如何每30分钟循环一次

时间:2020-01-06 11:00:10

标签: php loops for-loop

尝试创建一个for HTML字段中输出了HHMM的{​​{1}}循环。

我目前有:

data-time

除了每次都会输出for ($i = 1; $i <= 20; ++$i) { echo '<div class="mb-timer-hour"><div class="mb-timer-half" data-time="0830"></div></div>'; }

然后,我尝试了data-time="0830",但这又成功了:$h = 30; $h + 30

是否可以循环0800, 0830, 0860, 0890, ...

开始时间和结束时间是用户变量,这就是为什么我没有对数组进行硬编码的原因。

我希望的输出是:

0800, 0830, 0900, 0930, ...

2 个答案:

答案 0 :(得分:0)

您可以使用DateTime对象,并始终添加30分钟(或60分钟),直到达到结束时间为止。循环中使用format方法来输出时间。

$start = '0830';
$end = '1230';
$date_end = date_create($end);

for($date = date_create($start);$date <= $date_end; $date->modify('+30 Minutes')){

  echo '<div class="mb-timer-hour"><div class="mb-timer-half" data-time="'.$date->format('Hi').'"></div></div>';
}

循环中的HTML输出不好。我从问题中拿走了。如果测试在浏览器中运行,则必须查看页面源文本以获取结果。

答案 1 :(得分:0)

我最终解决此问题的方法是使用以下代码:

Object.defineProperty(Array.prototype, 'countValues', {
  value(num) {
    return this.reduce((a, b) => a + (b === num), 0);
  }
});

const newArr = [1, 2, 3, 4, 4]

console.log(newArr.countValues(4)) //Would return 2
$mb_timer_start = strtotime( 'today 0800' );
$mb_timer_end = strtotime( 'today 1800' );

这段代码也随着小时<div class="mbcontainer mb-timer"> <div class="mb-timer-container"> <!-- this is related to: https://stackoverflow.com/a/59637684/1086990 --> <div class="mb-marker"></div> <?php // loop through start H until end H for( $i = date('H', $mb_timer_start); $i < date('H', $mb_timer_end); ++$i ) { echo '<div class="mb-timer-hour" style="width:calc(100% / ' . $mb_timer_diff . ');" data-time="' . str_pad($i, 2, '0', STR_PAD_LEFT) . '00">'; echo '<div class="mb-timer-half" data-time="' . str_pad($i, 2, '0', STR_PAD_LEFT) . '30"></div>'; echo '</div>'; } ?> </div> </div> 的增加而变化,但是循环仍然是问题所在。