1

我在 mysql 数据库中有一个列,它是已创建帖子的到期时间.... 我有一个页面试图显示在时间达到每个帖子的到期时间之前还剩下多少小时和秒。例如,我的数据库中有这个:

2013-03-07 13:15:39

这显示了这篇文章什么时候过期......

现在我希望能够转到显示每个帖子的页面,然后显示每个帖子过期之前的剩余时间(基于当前时间)。

2013-03-07 12:15:39

到目前为止我一直在使用这个:

$now = new DateTime(date("h:i:s",time()));
$exp = new DateTime($row['time_expires']);
$diff = $now->diff($exp);
printf('%d hours, %d minutes, %d seconds', $diff->h, $diff->i, $diff->s);

$row 从数据库中获取帖子的位置

它一直在工作,但有时似乎有问题...我不知道为什么,但有时效果很好,但是当我再次检查时,时间说 15 小时到期,而实际上应该说 2 小时

4

1 回答 1

3

hindate()是 12 小时制,这会造成混淆,因为DateTime会将其解释为 24 小时制。默认情况下,对象将DateTime具有当前时间,因此只需使用:

  $now = new DateTime();
  $exp = new DateTime($row['time_expires']);
  $diff = $now->diff($exp);

但 Marc B 建议直接在查询中执行此操作可能更好。

于 2013-03-07T21:16:28.713 回答