无法使用PHP计算以分钟为单位的日期差
我面临一个问题。我需要使用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
$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,我不想改进代码。