gpt4 book ai didi

开始时间和结束时间之间的 PHP 时间循环

转载 作者:行者123 更新时间:2023-12-02 06:20:34 26 4
gpt4 key购买 nike

我有这个功能,可以在选择输入中为我提供一组选项。这些选项给我时间间隔为 5 分钟。问题是当时间是 23:45 时,选项将从 00:10 开始并根据 $j 变量循环。

这就是我想用文字做的:从 $open_time 到 $close_time 每隔 5 分钟给我一个选项列表。如果当前时间 ($timeNow) 大于 $open_time,则将 $open_time 设置为 $timeNow 以显示为第一个选项。仅在 $close_time 之前执行此循环。

我希望这是清楚的。感谢您的帮助:)

代码如下:

function selectTimesofDay(){
$output = "";
$now = date('G:i ', time()); // time now
$timeNow = strtotime($now); // strtotime now
$next_five = ceil($timeNow / 300) * 300; // get next 5 minute
// time now rounded to next 10 minute
$round5minNow = date('G:i', strtotime('+15 minutes',$next_five));
$open_time = strtotime('17:00');
$close_time = strtotime('23:59');

// in the middle of working hours, time sets to current
if($timeNow >= $open_time && $timeNow < $close_time){
$open_time = strtotime($round5minNow);
}
$time_diff = round(($close_time - $open_time)/60) ;
if(date('l') == 'Friday'){
$j = ($time_diff/5)+11; // working hours extended untill 1:00 AM
} else{
$j = ($time_diff/5)-1; // working hours untill 12:00 AM
}

for($i = 0; $i <= $j; $i++){
$b = $i*5;
$data = date('l')." - ".date("H:i", strtotime('+'.$b.' minutes', $open_time));
$output .= "<option value=\"{$data}\">";
$output .= $data;
$output .= "</option>";
}

return $output;
}

最佳答案

你真正需要的是:

function selectTimesOfDay() {
$open_time = strtotime("17:00");
$close_time = strtotime("23:59");
$now = time();
$output = "";
for( $i=$open_time; $i<$close_time; $i+=300) {
if( $i < $now) continue;
$output .= "<option>".date("l - H:i",$i)."</option>";
}
return $output;
}

因此,它的作用是运行一个循环,在打开和关闭之间每隔五分钟检查一次。如果在当前时间之前,则跳过它,否则添加一个选项。

它比您尝试做的更有效率,而且可能也更容易理解。

你甚至可以把它放在循环之后:

if( $output == "") return "<option disabled>Sorry, we're closed for today</option>";

另外,请注意我是如何始终省略 value 属性的。这是因为在没有 value 的情况下,选项的文本用作值。因此,该解决方案避免了不必要的重复。

关于开始时间和结束时间之间的 PHP 时间循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com