$ datetime-> diff尽管明显相隔1天但仍返回零点?

时间:2016-09-15 18:45:08

标签: php date

所以我基本上有两个约会。今天是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>

这里是截图: enter image description here

1 个答案:

答案 0 :(得分:3)

正如我在评论中提到的那样,您今天要比较今天,因为您实际上从未使用数据库中的日期。使用今天代表的DateTime对象覆盖该变量。

$date = new DateTime();
$rowdate = $stmt->fetchColumn();
$rowdate = new DateTime($rowdate);
$total = $rowdate->diff($date)->format('%a days');
return $total;