【问题标题】:How to compare current time with old time in PHP如何在PHP中比较当前时间和旧时间
【发布时间】:2026-02-21 14:50:02
【问题描述】:

我已将日期字段存储在 DB 中。

在 PHP 中,我正在获取该字段并转换为日期。

我想将该时间与当前时间进行比较。如果该差异超过 60 分钟。它会返回一些值。

我不知道怎么写逻辑

$lastUpdatedField = $rows_fetch['lastUpdatedTime'];
$lastUpdatedDate = new DateTime($lastUpdatedField);

$nowDate = new DateTime(date('y-m-d h:m:s'));

我的旧日期和时间在 $lastUpdatedDate 变量中,当前时间在 $nowDate 中。

如何比较这两者

【问题讨论】:

  • +1 用于使用 DateTime 类。
  • 旁注:new DateTime(date('y-m-d h:m:s')) 完全是多余的(并且可能存在时区问题)。完全省略构造函数参数。

标签: php


【解决方案1】:
$interval = $nowDate->diff($lastUpdatedDate);
echo $interval->h;

DateDiff:http://www.php.net/manual/en/datetime.diff.php

日期间隔:http://www.php.net/manual/en/class.dateinterval.php

【讨论】:

  • 它产生对象。在这里我只想要小时值。如何从 $interval 获取小时
  • RTFM ...echo $interval->h;
【解决方案2】:

之前有同样的问题,其实很简单

这是您声明变量的部分

$lastUpdateddate = new DateTime($lastUpdatedField);
$nowDate = new DateTime(date('y-m-d h:m:s'));

然后您必须将它们转换为第二格式,以便您可以对它们进行数学运算 为此,请使用 strtotime

$Diff = strtotime($lastUpdatedDate) - strtotime($nowDate);

那就看看时间差是不是超过60分钟, 所以用 60 秒得到分钟,用 60 得到小时

if ($diff/60/60 <= 1){
    //do your thing here
{

【讨论】:

    【解决方案3】:

    首先将当前时间和旧时间转换为一个单位,例如通过 strtotime() 传递的 Unix 时间戳。然后区分两个时间戳以获得两次之间的差异。

    $difftime = strtotime(date('Y-m-d H:i:s')) - strtotime($rows_fetch['lastUpdatedTime']);
    

    然后将差值转换为天数,如下所示:

    $days=$difftime/24*60*60;
    

    一旦你得到了天数,你就可以从它下面得到分钟来比较以满足你的需要。

    $timediff = $days * 24 * 60;
    

    【讨论】:

    • 试着充实你的答案。仅仅发布一个没有任何上下文或解释的代码块并不是一个好的答案。
    • @Xavier Kapeller 现在答案还可以还是仍需要修改。
    • 是的,现在好多了!
    最近更新 更多