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');
我正在使用以下代码来获取两个日期之间的差异。我在返回正确的剩余天数时遇到问题。
<?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');