Разница в датах не будет работать, объект datetime - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь получить разницу между 2 датами, годами, месяцами, днями, часами и неделями.

Но когда я это делаю, объект вылетает на страницу.

$row['timedate'] является столбцом DateTime из базы данных

$content_date = $row['timedate'];
$content_date = (new DateTime($content_date))->format('Y-m-d H:i:s');

$now_date = (new DateTime('now'))->format('Y-m-d H:i:s');

$since_start = $content_date->diff($now_date);

echo $since_start->days . ' days total<br>';
echo $since_start->y . ' years<br>';
echo $since_start->m . ' months<br>';
echo $since_start->d . ' days<br>';
echo $since_start->h . ' hours<br>';
echo $since_start->i . ' minutes<br>';
echo $since_start->s . ' seconds<br>';

Если я эхо $content_date равно 2019-02-25 01: 44: 51

Если я эхо $now_date равнона 2019-02-25 02: 29: 32

Может кто-нибудь сказать мне, почему это не работает?

1 Ответ

0 голосов
/ 25 февраля 2019

Вы не должны форматировать $content_date и $now_date как строки, если хотите использовать метод DateTime::diff.Вместо этого оставьте их как DateTime объекты:

$content_date = new DateTime($content_date);

$now_date = new DateTime();

$since_start = $content_date->diff($now_date);

echo $since_start->days . ' days total<br>';
echo $since_start->y . ' years<br>';
echo $since_start->m . ' months<br>';
echo $since_start->d . ' days<br>';
echo $since_start->h . ' hours<br>';
echo $since_start->i . ' minutes<br>';
echo $since_start->s . ' seconds<br>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...