比较IF语句中的时间


Comparing Time in IF statement PHP

我正在开发一个PHP模块,我应该管理时差,并在特定的时差进行。我正在从包含时间的数据库($end_date)中获取值。

$end_date = $result['end_date'];

获取服务器时间
$date = $this->GetServerTime();

获取两者之间的时差

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

现在,我需要通过IF语句检查时差是否小于15秒。我的方法:

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

但我相信我没有做正确的事情,我该怎么比较呢?我做了很多研究,但无济于事,任何帮助都很感激。

可以这样做

$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>
}

从这里找到的灵感和代码的主要部分

每当我必须做类似的事情时,我就使用时间戳(以秒为单位)进行计算。

$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()以秒为单位返回时间戳。

可以这样做:

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