我正在尝试制作一个小脚本,显示11:00到17:00之间的小时范围。 11:00是起点,17:00是终点。到目前为止,我已经做到了这一点:
<?php
// Defining hours
$now = "13:00"; // <- my time now
$start_time = "11:00"; // start point
$end_time = "17:00"; // end point
// Convert to timestamps
$begin = strtotime($start_time);
$end = strtotime($end_time);
// Display range
while($begin <= $end) {
echo date("H:i", $begin)." </br />";
$begin = strtotime('1 hour', $begin);
}
?>
它成功输出起点和终点之间的范围:
11:00
12:00
13:00
14:00
15:00
16:00
17:00
如果实际时间超过开始时间(11:00),我的目标是让此脚本显示从13:00(我的时间)开始的小时范围。像这样:
11:00 hidden
12:00 hidden
13:00
14:00
15:00
16:00
17:00
有人可以建议如何制作吗?
答案 0 :(得分:2)
嗨,在这种情况下,只需使用此
$present = strtotime($now);
if($present > $begin){
$begin = $present;
}
但如果说$now = 18:00
或超出此范围
在这种情况下,此代码不显示任何内容
答案 1 :(得分:0)
我认为您可以简化整个解决方案。您不必使用时间操作,而只是将变量从当前小时或11
增加到17
。要确定$begin
,只需使用max()
,如下所示:
$begin = max(date('H'), 11);
$end = 17;
while($begin <= $end) {
echo $begin . ':00<br>';
$begin++;
}
答案 2 :(得分:0)
我在@ user1234建议中添加了一些小位,现在它可以按照我想要的方式工作。以下是供其他人参考的完整代码。
<?php
// Defining hours
$now = "13:00"; // <- my time now
$start_time = "11:00"; // start point
$end_time = "17:00"; // end point
// Convert to timestamps
$actual = strtotime($now);
$begin = strtotime($start_time);
$end = strtotime($end_time);
// Added this to see if actual time is more than start time - creadit user1234
if($actual > $begin) {
$begin = $actual;
}
// Added this to see if actual time is more than 17:00
if($actual > $end) {
echo "Try tomorrow";
}
// Display ranges accordingly.
while($begin <= $end) {
echo date("H:i", $begin)." </br />";
$begin = strtotime('1 hour', $begin);
}
?>
如果需要,欢迎任何人进行测试和使用。