【问题标题】:Php subtract two dates [duplicate]php减去两个日期[重复]
【发布时间】:2016-01-08 22:46:45
【问题描述】:

我从 mysql 数据库中获取 $status_date,当我回显 $status_date 时,它​​看起来像这样 -> 2016-01-08 22:18:14。我正在设置 $now ,当我回显时,它看起来像这样 -> 2016-01-08 22:43:27。我想从 $now 中减去 $status_date。这是我的代码:

$now = date("Y-m-d H:i:s");  
$status_date = date("Y-m-d H:i:s",strtotime($row['status_date']));
$x = $now-$status_date;

$x 返回这个 -> 0

为什么不减法?

【问题讨论】:

  • 因为您尝试减去的两个变量只是字符串。您不能从另一个字符串中减去一个字符串,PHP 会将它们强制转换为 0。检查上面的评论,您的问题与另一个问题重复。

标签: php datetime subtraction


【解决方案1】:

日期不会这样减去。将两个日期都转换为时间,减去,然后再转换回日期。

$now = strtotime(date("Y-m-d H:i:s"));
$status_date = strtotime($row['status_date']);
$x = date($now-$status_date);

但是,如果您想获取日期之间的时间,请考虑时刻库。

https://github.com/fightbulc/moment.php

【讨论】:

    【解决方案2】:

    你也可以使用类似的东西:

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

    然后您可以将任何 dateInterval 属性或函数与 $diff 一起使用。

    文档:http://php.net/manual/es/datetime.diff.php http://php.net/manual/es/class.dateinterval.php

    【讨论】:

      【解决方案3】:

      根据http://php.net/manual/en/datetime.diff.php

      检查我在这里写的这段代码: https://eval.in/499594

      <?php 
      
      $strStart = '2015-01-08 22:18:14'; // status  date
      $strEnd = 'now';  
      
      $dteStart = new DateTime($strStart); 
      $dteEnd   = new DateTime($strEnd); 
      
      $dteDiff  = $dteStart->diff($dteEnd); 
      
      print $dteDiff->format("%Y-%m-%d %H:%I:%S"); 
      

      thre result is smth like : 01-0-0 00:38:42

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-27
        • 2015-01-03
        • 2012-10-13
        • 1970-01-01
        • 2011-03-06
        • 2012-06-07
        • 2019-05-04
        相关资源
        最近更新 更多