无法使用PHP计算以分钟为单位的日期差

无法使用PHP计算以分钟为单位的日期差,php,Php,我面临一个问题。我需要使用PHP计算日期时间差,但得到的值错误。我在下面解释我的代码 <?php $added_date="31-01-2018 12:46 PM"; $endTime = strtotime("+10 minutes", strtotime($added_date)); $currentTime = strtotime(date("d-m-Y H:i:s A")); //echo $currentTime.'</br>'; // (round(abs($cu

我面临一个问题。我需要使用PHP计算日期时间差,但得到的值错误。我在下面解释我的代码

<?php
$added_date="31-01-2018 12:46 PM";
$endTime = strtotime("+10 minutes", strtotime($added_date));

$currentTime = strtotime(date("d-m-Y H:i:s A"));
//echo $currentTime.'</br>';
// (round(abs($currentTime - $endTime) / 60,2));exit;
if(round(abs($currentTime - $endTime) / 60,2) > 10){
    echo false;
}else{
    echo true;
}
?>


这里我需要的是,如果当前时间距离给定日期时间超过
10分钟
,它将返回false,但它总是显示
true

,我不谈论代码的逻辑

但是您的代码的问题在于calculate
$currentTime
var

$currentTime = strtotime(date("d-m-Y H:i:s A"));
它一无所获!因为在
strotime
中使用了错误的模式。 您必须使用以下选项:

$currentTime = strtotime(date("d-m-Y h:i:s A"));
或者这个:

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

对于
$currentTime
var.

中的have correction timestrap,您的代码不起作用的原因是
strottime
不喜欢将日期格式化为
d-m-Y H:i:s A
。它不喜欢这样的原因是因为你有24小时版本的小时和上午/下午子午线指示器。就标准时间而言,没有“下午15:00”这样的事情。以下任一项将为您获取所需的日期时间整数:

$currentTime = strtotime(date("d-m-Y H:i:s A"));
$currentTime = strtotime(date("d-m-Y h:i:s A")); // 07-02-2018 06:24:49 PM

或者,如果您只需要将当前时间作为一个整数,您可以完全避免这种情况,并使用:

$currentTime = time();
或者:

您可以使用内置在PHP中的对象

$added_date= "31-01-2018 12:46 PM";
$endTime = DateTime::createFromFormat('d-m-Y H:i A', $added_date);
$endTime->modify("+10 minutes");

$currentTime = new DateTime();

$time_diff = $currentTime->diff($endTime, 1);

if ($time_diff->i > 10 ) {
    echo "true" . PHP_EOL;
} else if ( $time_diff->i == 10 && $time_diff->s > 0) {
    echo "true" . PHP_EOL;
} else {
    echo "false" . PHP_EOL;
}

请注意,
DateTime::diff
返回一个对象,允许您访问不同单位的差异。

FWIW,
strotime(date(…)
获取当前时间,将其格式化为字符串,然后将该字符串解析为UNIX时间戳。那真是太棒了。只需执行
time()
即可获得当前的UNIX时间戳。这将正确地为我输出
false
。“我只得到了错误,我也只得到了错误”。@Werner
->我不做你认为它做的事!或者OP可以使用
time()
获取当前时间。@Anthony我知道,但我想修复bug,我不想改进代码。