比较 IF 语句中的时间 PHP

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

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

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

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

这是可以做到的:

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