无法使用PHP计算分钟的日期差异

时间:2018-01-31 10:00:18

标签: 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($currentTime - $endTime) / 60,2));exit;
if(round(abs($currentTime - $endTime) / 60,2) > 10){
    echo false;
}else{
    echo true;
}
?>

如果当前时间超过10 min,我需要从给定的日期时间开始返回false,但它始终显示true

2 个答案:

答案 0 :(得分:0)

我不会谈论代码的逻辑。

但您的代码问题在于计算$currentTime var。

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

它什么都不返回!因为strtotime中使用的模式不好。 你必须使用它:

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

或者这个:

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

$currentTime var。

中有更正时间限制

答案 1 :(得分:0)

您的代码无法正常工作的原因是因为strtotime不喜欢您的日期格式为d-m-Y H:i:s A这一事实。它不是这样的原因是因为你有24小时版本的小时和am / pm子午线指示器。没有&#34; 15:00 PM&#34;就strtotime而言。以下任一项都将为您提供所需的日期时间整数:

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

$currentTime = strtotime(date("d-m-Y H:i:s"));  // 07-02-2018 18:28:42

或者,如果您只需要将当前时间作为整数,则可以完全避免使用:

$currentTime = time();

可替换地:

您可以使用PHP内置的DateTime对象

$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会返回DateInterval个对象,您可以通过该对象访问不同单位的差异。