检查当前时间是否在指定时间范围内

时间:2014-03-10 21:26:37

标签: php date time compare

我需要能够检查时间是否超过指定时间的15分钟。

但我的问题是它只是比较分钟,而不是几天或几年或几个月。

编辑:我已经更新了我的代码,但它仍然不适用于前几天。

$notification_time = strtotime("-1 hour", $cal_time);
$really_now = time();
if($really_now >= strtotime("-15 minutes", $notification_time) && $really_now <= strtotime("+15 minutes", $notification_time))
{ echo 'within time!'; }

如果$ really_now在$ cal_time的-1小时的30分钟内,则上述代码有效。但是当我尝试:

$notification_time = strtotime("-1 day", $cal_time);

如果当前时间在$ cal_time -1天的30分钟内,则无效。

3 个答案:

答案 0 :(得分:0)

<?php

$cur_time = time();
$from_time = strtotime("-1 hour", $cur_time);
echo round(abs($cur_time - $from_time) / 60,2). " minute";

?>

这将提供分钟的差异。请注意,这篇文章同样回答:

How to get time difference in minutes in PHP

答案 1 :(得分:0)

我的回答..

$notification_time = strtotime("-1 day", $cal_time);
$really_now = time();
if($really_now >= strtotime("-15 minutes", $notification_time) && $really_now <= strtotime("+15 minutes", $notification_time)){ echo 'shazam!'; }

答案 2 :(得分:0)

我用这个片段检查餐厅的关闭时间和开放时间范围。餐厅也可以是夜总会,可以在晚上8点开放,并在凌晨2点关闭。所有情况(前进距离和反向距离)都是正确的。参数格式只是时间格式。无日期。将current_order_time = 0放在参数中,因为没有等待时间。

echo isOnline('22:59:00','00:59:59','23:39:01',81);
function isOnline($open_time,$close_time,$now, $current_order_time){
	$live=1;
	$open=strtotime($open_time);
	$close=strtotime($close_time);
	//echo $open ."<". $close. "<br>" ;
	if($open > $close){
		$now=strtotime(date("Y-m-d ").$now);
		$now_collection=$now +($current_order_time*60);
		$open=strtotime(date('Y-m-d').' '.$open_time);
		$close=strtotime('+1 day',strtotime(date('Y-m-d').' '.$close_time));
		//echo $open ."<". $now_collection ."&&". $close .">". $now_collection ."&&". $open ."<". $now ."&&". $close .">". $now."<br>";
		if(!($open < $now_collection && $close > $now_collection && $open < $now && $close > $now )){
			//return $this->getFinalFailure("The restaurant is currently Off-line and not taking orders",2000);
			$live=0;
		}
		
	}else{
		$now=strtotime($now);
		$now_collection= $now + ($current_order_time*60);
		//echo $open ."<". $now_collection ."&&". $close .">". $now_collection ."&&". $open ."<". $now ."&&". $close .">". $now."<br>";
		if(!($open < $now_collection && $close > $now_collection && $open < $now && $close > $now )){
			$live=0;	
		}
	
	}
    return $live;
}