日期差不起作用,日期时间对象

时间:2019-02-25 01:34:27

标签: php datetime

我正在尝试获取年,月,日,小时和周中两个日期之间的差值。

但是当我这样做时,对象使页面崩溃。

$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 :(得分:2)

如果要使用$content_date方法,则不应将$now_dateDateTime::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>';