Расчет дней не дается правильных дней - PullRequest
0 голосов
/ 01 марта 2019

Я хотел бы рассчитать дни на основе двух дат, но он дал неправильное количество дней.

У меня есть 2 переменные

$date=$date[1]; Из базы данных $now =date('d/m/Y');Текущая дата

$date значение переменной (исходит из дБ) 05/03/2019

Я использовал следующий скрипт для подсчета дней, основанных на двух датах, но с возвратом 120 дней.

Метод 1

$date=$date[1]; `Is coming from Database`
$now =date('d/m/Y');

$date1 = new DateTime($now);
$date2 = new DateTime($date);
$diff = $date2->diff($date1)->format("%a");

Метод 2

$datetime1 = new DateTime($now);
$datetime2 = new DateTime($date);

$difference = $datetime1->diff($datetime2);

echo 'Difference: '.$difference->y.' years, ' 
                   .$difference->m.' months, ' 
                   .$difference->d.' days';

print_r($difference);

Но он возвращает неправильные дни в следующем выводе

Difference: 0 years, 4 months, 120 daysDateInterval Object
(
    [y] = 0
    [m] = 4
    [d] = 0
    [h] = 0
    [i] = 0
    [s] = 0
    [invert] = 0
    [days] = 120
)

Почему это с учетом неправильного вывода дней?

1 Ответ

0 голосов
/ 01 марта 2019

Если вы используете формат 'd / m / Y', вы должны использовать функцию createFromFormat для преобразования строки даты в объект даты.Например:

$date1 = new \DateTime();
$date2 = \DateTime::createFromFormat('d/m/Y', '05/03/2019');

$diff = $date2->diff($date1)->format("%a");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...