在php中检查strtotime的日期间隔

时间:2016-09-05 09:54:57

标签: php strtotime

我需要一些关于此代码的帮助:

$interval

我的目的是检查两个日期之间的$key['time_stamp']是否大于45分钟。

2016-09-02 16:56:25datetime2if为当前日期时间。为什么procedure TForm3.Timer1Timer(Sender: TObject); var k: Integer; InBuffer: array[1..500] of char; begin for k:=1 to 500 do InBuffer[k]:=' '; Trim(InBuffer); if cport.Connected = true then begin ComLed1.Kind := lkGreenLight; cport.ReadStr(str,k); Trim(str); S:=str; if str = '' then begin end else begin memo1.lines.Add(str); end; end else begin ComLed1.Kind := lkredLight; txt_com_status1.Caption := 'Connected'; end; end; 条件永远不会成立?!

我是否错过了一些愚蠢或什么?!

5 个答案:

答案 0 :(得分:2)

如果$ key [' time_stamp']是' 2016-09-02 16:56:25',则不应该

$datetime1  = strtotime ( $key['time_stamp'] );

而不是

$datetime1  = strtotime ( date ($key['time_stamp']) );

答案 1 :(得分:1)

这一行:

$val = 45*60*1000;

以毫秒为单位给出45分钟,我想你想要:

$val = 45*60;

答案 2 :(得分:0)

你犯了两个错误:

  1. date function$format参数中的分钟必须表示为i(而不是m,就像您所做的那样。)
  2. $interval以秒为单位进行测量(因此您不必乘以1000,就像它们是毫秒一样)。
  3. 所以你的代码应该写成如下:

    $key['time_stamp'] = '2016-09-02 16:56:25';
    $datetime1 = strtotime(date($key['time_stamp']));
    $datetime2 = strtotime(date('Y-m-d H:i:s'));
    $interval = $datetime2 - $datetime1;
    $val = 45 * 60;
    
    if ($interval > $val) { }
    

答案 3 :(得分:0)

我发现使用DateTime()个对象更容易推理,并且它们在if语句中具有透明可比性。

我想建议一种替代方法:

<?php

$key['time_stamp'] = '2016-09-02 16:56:25';

$then = new DateTime($key['time_stamp']);
$interval = new DateTime('-45 minutes');

if ($then < $interval) {
    echo 'interval passed';
} else {
    echo 'interval not passed';
}

这会产生:

  

间隔传递

希望这会有所帮助:)

一个警告不适用于您的情况,但值得一提的是:如果使用DateTime::createFromFormat()创建带有UNIX时间戳的DateTime()对象,请务必检查两个DateTime()对象是否具有同一时区。

答案 4 :(得分:0)

以下是您的查询解决方案。

$key['time_stamp'] = "2016-09-02 16:56:25";
   $datetime1 = strtotime ( date ($key['time_stamp']) );
   $datetime2  = strtotime ( date('Y-m-d H:i:s'));

   $interval   = round(($datetime2 - $datetime1)/ 60); //interval in minutes

   $val = 45; //45 minutes
   if ($interval > $val) {
     echo "Success";
   }