英文:
How would you loop every 30 minutes
问题
尝试创建一个for
循环,使HHMM
在data-time
HTML字段中输出。
我目前有以下代码:
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>
英文:
Trying to make a for
loop that has the HHMM
outputted in a data-time
HTML field.
I currently have:
for ($i = 1; $i <= 20; ++$i) {
echo '<div class="mb-timer-hour"><div class="mb-timer-half" data-time="0830"></div></div>';
}
Except this outputs data-time="0830"
every time.
I then tried $h = 30; $h + 30
but this then goes: 0800, 0830, 0860, 0890, ...
Is it possible to loop 0800, 0830, 0900, 0930, ...
?
The start time and end times are user variables which is why I haven't hard coded an array.
The output I was hoping for was:
<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>
答案1
得分: 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输出可能不太美观。我是从问题中提取的代码。如果在浏览器中运行测试,需要查看页面源代码以查看结果。
英文:
You can use DateTime objects and always add 30 minutes (or 60 minutes) until the end time is reached. The format method is used in the loop to output the times.
$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>';
}
The HTML output in a loop is not nice. I took it from the question. If the test runs in the browser, the page source text must be viewed for the result.
答案2
得分: 0
以下是翻译好的部分:
我最终解决了这个问题,使用了以下代码:
$mb_timer_start = strtotime('today 0800');
$mb_timer_end = strtotime('today 1800');
<div class="mbcontainer mb-timer">
<div class="mb-timer-container">
<!-- 这与以下链接相关: https://stackoverflow.com/a/59637684/1086990 -->
<div class="mb-marker"></div>
<?php
// 从开始小时循环到结束小时
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
也随着小时的增加而变化,但循环仍然是问题。
英文:
The way I ended up solving this was with the following code:
$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>
This code changed with the addition of the hour data-time
too but the looping was still the question.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论