php 中的日期差异计算不正确

Date difference not calculating correctly in php

我正在使用以下代码来获取两个日期之间的差异。我在返回正确的剩余天数时遇到问题。

<?php 
$nextservicedate = FrmProDisplaysController::get_shortcode( array( 'id' => 3451 ) );
$currentdate = date("d/m/Y");
$daysremaining = $nextservicedate - $currentdate;
echo $nextservicedate. " | ";
    if ( strpos($nextservicedate, 'None registered') !== false )

    {
        echo "None Registered";
    }
    elseif ($daysremaining < "0")
    {
        $negativedays = str_replace('-', ' ', $daysremaining);
        echo $negativedays. " days overdue";
    }
    elseif ($daysremaining <= "30")
    {
        echo $daysremaining. " days (upcoming service)";
    }
    else
    {
        echo $daysremaining. " days";
    }
?>

条目

FrmProDisplaysController::get_shortcode( array( 'id' => 3451 ) )

returns 来自 wordpress 表单插件 (FormidablePro) 的日期为 30/10/2016。

代码正在返回,还有 23 天,我相信它会持续到本月底。

我知道我遗漏了一些东西,我认为这可能与计算代码剩余部分的天数有关。

谁能看出任何明显的错误?我是否需要像对 $currentdate 所做的那样声明 $nextservicedate?

如有帮助,将不胜感激!

此致

马特

PHP的date()returns日期字符串不能用于对日期进行算术运算。

您需要做的是使用 createFromFormat() 从字符串创建 DateTime 服务日期对象并创建当前 DateTime() 对象。

然后使用 DateTime 对象的 diff() 函数求出两天之间的差异。

所以你的代码看起来像这样,

$nextservicedate=DateTime::createFromFormat("d/m/Y",$nextservicedate);
$todaydate=new DateTime();
$difference=$nextservicedate->diff($todaydate);

要获得天数差异,

echo $difference->format('%R%a days');