【问题标题】:datetime difference with php与php的日期时间差异
【发布时间】:2013-05-11 19:26:37
【问题描述】:

我已经查看了一些关于此的帖子,但我仍然对它的工作原理有点困惑。

我想比较 2 次。第一次是现在的时间,第二次是来自数据库的日期时间。我可以得到日、月和年的差异,但是当我尝试获取分钟和秒时,数字似乎不正确。

这是我获取时间(以分钟和秒为单位)的代码:

$date1 = date('Y-m-d H:i:s');
$date2 = $blah['datetime']; //the variable here is in dateTime format coming from the database
$diff = abs(strtotime($date2) - strtotime($date1)); //Does this give the seconds?
$mins = floor($diff / 60);

到目前为止,它返回的值类似于 560,即使我在一分钟前添加了该行(在数据库中的表中)。也许我误解了什么,或者错过了什么。如果你想让我澄清任何事情,请告诉我。谢谢!

【问题讨论】:

  • 向我们展示$date1$date2 的值。
  • $date1 和 $date2 的日期格式相同('Y-m-d H:i:s')。 $date1 是现在的日期(当前时间),$date2 是过去存储的相同日期格式。您需要知道确切的日期和时间吗?
  • 不过,日期如下: $date1 = 2013-05-11 21:55:19 $date2 = 2013-05-11 12:49:12
  • 在我看来这两个时间戳之间有 560 分钟...
  • 是的..我上面显示的代码给了我与你提到的大致相同的数字。之前有人发帖说 $diff 给了我毫秒,所以我尝试将它除以 1000,但是分钟数给了我 0。

标签: php datetime time subtraction


【解决方案1】:

使用 PHP 的 DateTimeDateInterval 类很容易计算。

$date1 = new \DateTime();
$date2 = \DateTime::createFromFormat('Y-m-d H:i:s', $blah['datetime']);
$diff = $date1->diff($date2); // $diff is an Instance of DateInterval

$mins = ($diff->days * 60 * 24) + ($diff->h * 60) + $diff->i;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2010-12-20
    • 1970-01-01
    • 2012-02-17
    • 2014-04-21
    • 1970-01-01
    相关资源
    最近更新 更多