2015-10-01 127 views
1

我正在开发一个php模块,我应该管理时间差异并在特定的时间差中继续。 我正在从数据库($ end_date)获取包含时间的值。在IF语句中比较时间PHP

$end_date = $result['end_date']; 

正从

$date = $this->GetServerTime(); 

服务器时间,现在得到这两个

$diffrence = date("Y-m-d H:i:s",strtotime("$date - $end_date")); 

之间的时间差,我需要检查,如果时间差通过,如果小于15秒声明。我的方法:

$to_time = strtotime("0000-00-00 00:00:15"); 
      if ($difference < $to_time) 
      { 
      echo "here"; 

      } 

但我相信我没有做正确的事情,我该怎么比较呢? 我已经做了大量的研究,但无济于事,任何帮助表示赞赏。要做到这一点

+0

嗯,首先你的'$ difference'变量看起来像'2015-10-01',而你的'$ to_time'变量看起来像一个字符串这个'144112331'因此比较他们是不行的。 – Epodax

+0

有什么建议吗? –

+0

Epodax是对的。这根本不起作用。这个怎么样:据我所知'strtotime'在几秒钟内返回时间戳。不会简单地将服务器日期($ date)和提取日期($ end_date)转换为时间戳,然后只是将它们相减会给你秒差异? –

回答

1

发现每当我有做类似的事情,我只是时间戳(这是秒)计算。

$end_date = strtotime($result['end_date']); # timestamp in s 
$date  = strtotime($this->GetServerTime()); # timestamp in s 

if ($date - $enddate > 15) { 
    echo "Here"; 
} 

对于分钟和小时,你可以用60

if ($date - $enddate > (15*60)) { # 15 minutes 
    echo "Here"; 
} 

容易繁殖这些时候,我不能完全肯定这将夏令时工作,但它应该足以满足大多数使用情况。

哦,顺便说一句:如果您必须与当前时间进行比较,那么time()会以秒为单位返回时间戳,这非常有用。

3

一种方法可以使用这样的事情

$to_time = strtotime("2008-12-13 10:42:00"); 
$from_time = strtotime("2008-12-13 10:21:00"); 
$difference = $to_time - $from_time; 

if($difference > 15){ 
    <CODE> 
} 

对于那些谁使用不同的日期/时间格式比上面,可以使用类似于下面的代码,你可以使用date()功能的参数来指定你的日期格式。

$dateFormat = "d/m/Y H:i:s"; 
$tmp_to_time = date_create_from_format($dateFormat,"25/08/2015 10:45:12"); 
$tmp_from_time = date_create_from_format($dateFormat,"25/08/2015 10:34:15"); 

$to_time = strtotime(date_format($tmp_to_time , $dateFormat)) 
$from_time = strtotime(date_format($tmp_from_time , $dateFormat)) 
$difference = $to_time - $from_time; 

if($difference > 15){ 
    <CODE> 
} 

灵感和代码的主要部分来自here

+0

不需要四舍五入。 –

+0

更正@SalmanA - 感谢您的领导:) – Epodax

0

这是怎么可以这样做:

$end_date = strtotime($result['end_date']); 
$date  = strtotime($this->GetServerTime()); 
$difference = $date-$end_date; 
$sec = strtotime(15); 
if ($difference < $sec){ 
    echo "here"; 
}