Как добавить год в объекте даты, который имеет только месяц и дату

$duedate = date("Y")."-".$row['due_date'];     //$row['due_date'] = 08-23
$submitdate= $row['sub_date'];     //2016-08-29
$diff = date_diff($duedate,$submitdate);
echo $diff->format("%d days");

Ошибка 1 = date_diff () ожидает, что параметр 1 будет DateTimeInterface, строка задана …..

Ошибка 2 = вызов функции-члена format () для логического значения в …..

0

Решение

функция date_diff требует, чтобы объект DateTime был передан в него.

С использованием Функция DateTime :: createFromFormat Вы можете создать объект DateTime из строки, а затем использовать его в date_diff.

(Этот код не тестировался, и я тоже новичок в PHP, надеюсь, это поможет вам!)

//Create the date from our records and the current year.
$dueDate = DateTime::createFromFormat('Y-m-d', date("Y")."-".$row['due_date']); //$row['due_date'] = 08-23
$submitDate= DateTime::createFromFormat('Y-m-d', $row['sub_date']);     //2016-08-29

$diff = $dueDate->diff($submitDate); //Calculate the difference between the two dates

//Echo it out
echo $diff->format('%R%a days');
2

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

Ваш код не будет работать, если вы не пройдете DateTime возражать против этого. Также это можно сделать с помощью diff метод на DateTime объекты. Вы можете проверить примеры в документация.

Кроме того, проверьте, между какими датами вы хотите разницу, потому что она может быть как положительной, так и отрицательной 6 дней.

$duedate = new DateTime(date("Y") . "-" . $row['due_date']);
$submitdate = new DateTime($row['sub_date']);
echo $duedate->diff($submitdate)->format("%R%a days");

демонстрация

0

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