php - 减法时间逻辑 - PHP
问题描述
我想显示 2 次之间的时间段。开始时间和结束时间。使用下面的代码,它工作正常。它循环开始和结束时间,并增加 30 分钟的时间。从下午 2:00、下午 2:30、下午 3:00 开始,一直到晚上 10:00
$start_time = "14:00:00";
$end_time = "22:30:00";
@for ($i = strtotime($start_time); $i < strtotime($end_time); $i=$i+1800)
<li data-time="{{date('g:i A', $i)}}" class="timefield">{{date("g:i A", $i)}}</li>
@endfor
我坚持的是两部分
- 隐藏过去的时间,假设现在是下午 4:00,它应该隐藏过去的时间段,即下午 2:00、下午 2:30、下午 3:00、下午 3:30
- 如果现在是下午 4:00,则应该从下午 5:00 一直到晚上 10:00。增加1小时的额外缓冲时间。
解决方案
您可以像这样在逻辑中插入当前时间戳:
$start_time = strtotime("14:00:00");
$end_time = strtotime("22:30:00");
$now = (new DateTime())->getTimestamp();
$nowRemaining = $now % 1800; // Divide to half hours & get the remaining seconds
$nowRounded = $now - $nowRemaining; // Round to half hours
$nextHour = $nowRounded + ($nowRemaining == 0 ? 3600 : 5400); // Add the extra buffer
for ($i = max($start_time, $nextHour); $i < $end_time; $i=$i+1800) {
...
}