【问题标题】:How would you loop every 30 minutes你会如何每 30 分钟循环一次
【发布时间】:2020-01-06 11:00:10
【问题描述】:

尝试创建一个for 循环,在data-time HTML 字段中输出HHMM

我目前有:

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, ...

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

我希望的输出是:


<div class="mb-timer-hour"><div class="mb-timer-half" data-time="0830"></div></div>
<div class="mb-timer-hour"><div class="mb-timer-half" data-time="0930"></div></div>
<div class="mb-timer-hour"><div class="mb-timer-half" data-time="1030"></div></div>
...
<div class="mb-timer-hour"><div class="mb-timer-half" data-time="1730"></div></div>

【问题讨论】:

  • 创建一个函数来运行你的代码,创建一个时钟,在时钟内每隔(your_time)运行一个函数,运行函数后重置时间,重新开始
  • @DevsiOdedra 它很相似,但不是我想要的答案。我上面的循环是输出 n 个 div,其中时间部分是每半小时。当我尝试循环两个 fors 时,我最终得到每个 div 块的所有时间

标签: php loops for-loop


【解决方案1】:

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

$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 输出不好。我从问题中得到它。如果测试在浏览器中运行,则必须查看页面源文本以获取结果。

【讨论】:

【解决方案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>

这段代码也随着data-time 的增加而改变,但循环仍然是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-01
    • 2015-03-31
    • 2021-09-13
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多