[英]Check a date interval with strtotime in php
我需要以下代码的帮助:
$key['time_stamp'] = '2016-09-02 16:56:25';
$datetime1 = strtotime(date($key['time_stamp']));
$datetime2 = strtotime(date('Y-m-d H:m:s'));
$interval = $datetime2 - $datetime1;
$val = 45 * 60 * 1000;
if ($interval > $val) { }
我的目的是检查两个日期之间的$interval
是否大于45分钟。
$key['time_stamp']
是2016-09-02 16:56:25
和datetime2
是当前日期时间。 为什么if
条件永远不成立?
我错过了一些愚蠢的事情吗?!
如果$ key ['time_stamp']为'2016-09-02 16:56:25',应该不是吗
$datetime1 = strtotime ( $key['time_stamp'] );
代替
$datetime1 = strtotime ( date ($key['time_stamp']) );
?
这行:
$val = 45*60*1000;
以毫秒为单位的45分钟,我想您想要:
$val = 45*60;
您犯了两个错误:
date
函数的$format
参数中的分钟数必须表示为i
(而不是m
,如您所愿)。 $interval
以秒为单位(因此您不必乘以1000,就好像是毫秒)。 因此,您的代码应编写如下:
$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) { }
我发现使用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()
对象是否具有相同的时区。
这是您的查询的解决方案。
$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";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.