【问题标题】:Minutes between two DateTimes in PHP [closed]PHP中两个日期时间之间的分钟数[关闭]
【发布时间】:2014-01-24 16:30:23
【问题描述】:

我正在尝试获取 PHP 中两个 DateTimes 之间的分钟数:

$time = new DateTime($dateString);
$now = new DateTime;
$diff = $time->diff($now);

echo $diff->format('%m');

结果始终为 0,尽管 DateTimes 相隔几个小时。 我该如何以正确的方式做到这一点?

【问题讨论】:

标签: php datetime dateinterval date-math


【解决方案1】:

%m 是几个月。分钟是%i:

echo $diff->format('%i');

【讨论】:

  • 对我的阅读技巧来说太多了... ^^
  • 您可以在此处查看 PHP 文档中的所有格式:fr2.php.net/manual/en/function.date.php
  • 它返回以小时为模的分钟数。
  • 这将是模数小时。因此,如果超过 59 分钟,您还需要考虑小时数。您可以检查小时数是否超过零,如果是,则将其乘以 60 以获得总分钟数。
  • @JohnConde 检查小时数是否超过零然后乘以它不是浪费资源吗?你可以直接说hours * 60 + minutes
【解决方案2】:

两个日期时间之间的总分钟数

$diff = (new DateTime($string))->diff(new DateTime); # PHP >= 5.4.0
#$diff = date_diff(date_create($string), date_create()); # PHP >= 5.3.0
$minutes = ($diff->days * 24 + $diff->h) * 60 + $diff->i;

demo

【讨论】:

    【解决方案3】:

    在这种情况下,我会保持简单并使用时间戳/60 之间的差异:-

    $minutes = ($date2->getTimestamp() - $date1->getTimestamp())/60;
    

    See it working.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2014-01-17
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多