所以我基本上有两个约会。今天是2016-09-15和2016-09-16的mysql。我创建了一个名为timeAgo($ id)的函数,它从mysql中获取id并将其作为datetime返回。这是功能:
public function timeAgo($id)
{
$sql = "SELECT post_date from arts where id=:id";
$stmt = $this->con->prepare($sql);
$stmt->bindParam(':id',$id);
$stmt->execute();
/* i think this is the problem? */ $date = new DateTime(date('y-m-d'));
$rowdate = $stmt->fetchColumn();
$rowdate = new DateTime();
$total = $rowdate->diff($date)->format('%a days');
return $total;
}
它应该基本上返回1天,但它实际上返回0天..? 我知道我的HTML并不重要,但无论如何它都在这里。
<span class="postdate"><i class="fa fa-calendar-times-o" aria-hidden="true"></i> Posted: <?=$artmanager->timeAgo($id);?></span>
答案 0 :(得分:3)
正如我在评论中提到的那样,您今天要比较今天,因为您实际上从未使用数据库中的日期。使用今天代表的DateTime对象覆盖该变量。
$date = new DateTime();
$rowdate = $stmt->fetchColumn();
$rowdate = new DateTime($rowdate);
$total = $rowdate->diff($date)->format('%a days');
return $total;