[英]PHP get current time in option select with cut-off time
我有以下效果很好的腳本:
<?php
function create_time_range($start, $end, $interval = '30 mins', $format = '12') {
$startTime = strtotime($start);
$endTime = strtotime($end);
$returnTimeFormat = ($format == '12')?'g:i:s A':'G:i:s';
$current = time();
$addTime = strtotime('+'.$interval, $current);
$diff = $addTime - $current;
$times = array();
while ($startTime < $endTime) {
$times[] = date($returnTimeFormat, $startTime);
$startTime += $diff;
}
$times[] = date($returnTimeFormat, $startTime);
return $times;
}
$times = create_time_range('7:30', '18:30', '30 mins');
?>
<select name="time_picker">
<option value="">Select Time</option>
<?php foreach($times as $key=>$val){ ?>
<option value="<?php echo $val; ?>"><?php echo $val; ?></option>
<?php } ?>
</select>
但是,我希望對此進行更改:首先,它應該僅顯示給定當前時間的可用時隙,其次應包括2小時窗口作為“截止時間”。
實際示例和理想結果:假設它是1PM,選項select將1.)甚至不顯示1PM之前的值; 2。)僅向我顯示下一個可用時段為3PM(2小時窗口)
我已經為此苦苦掙扎了幾天,但目前沒有結果。 一些專家的建議將不勝感激
您可以這樣做:
<?php
function create_time_range($start, $end, $interval = '30 mins', $format = '12') {
$startTime = strtotime($start);
$endTime = strtotime($end);
$returnTimeFormat = ($format == '12')?'g:i A':'G:i';
$hour = date('H');
$minute = (date('i')>30)?'30':'00';
$current = strtotime("$hour:$minute");
$addTime = strtotime('+'.$interval, $current);
$diff = $addTime - $current;
$times = array();
while ($current < $endTime) {
$times[] = date($returnTimeFormat, $current) . " " . "$hour:$minute";
$current += $diff;
}
$times[] = date($returnTimeFormat, $current);
return $times;
}
$times = create_time_range('8:00', '18:00', '30 mins');
?>
<select name="time_picker">
<option value="">Select Time</option>
<?php foreach($times as $key=>$val){ ?>
<option value="<?php echo $val; ?>"><?php echo $val; ?></option>
<?php } ?>
</select>
在這里,我將$ current用作基准時間,並通過獲取當前小時數來創建該時間,然后將時間舍入30分鍾,然后從中創建時間。
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.