wordpress — разница в дате не рассчитывается правильно в переполнении стека

Я использую следующий код, чтобы получить разницу между двумя датами. У меня проблемы с возвратом правильного количества оставшихся дней.

<?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 ) )

возвращает дату из плагина WordPress Form (FormidablePro) как 30/10/2016.

Код возвращается, осталось 23 дня, которые, я полагаю, приведут его к концу этого месяца.

Я знаю, что что-то упустил, и думаю, что это как-то связано с разработкой оставшихся дней кода.

Кто-нибудь может увидеть какие-либо явные ошибки? Нужно ли объявлять $ nextservicedate, как я это сделал с $ currentdate?

Любая помощь будет принята!

С уважением

Matt

0

Решение

РНР Дата() возвращает строку даты, которая не может быть использована для выполнения арифметических операций с датой.

Что вам нужно сделать, это создать DateTime дата обслуживания объекта из String с использованием createFromFormat () и создать текущий DateTime() объект.

Тогда используйте Diff () функция DateTime объект, чтобы найти разницу между двумя днями.

Итак, ваш код будет выглядеть примерно так:

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

Чтобы получить разницу в днях,

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector