我正在尝试获取年,月,日,小时和周中两个日期之间的差值。
但是当我这样做时,对象使页面崩溃。
$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
有人可以告诉我为什么这不起作用吗?
答案 0 :(得分:2)
如果要使用$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>';