【问题标题】:Get difference of two date in user friendly format using php使用 php 以用户友好的格式获取两个日期的差异
【发布时间】:2018-10-21 10:40:41
【问题描述】:

因此,我正在尝试以用户友好的方式计算到达 日期时间 的时间长度。

例如,假设当前日期时间是2018-09-10 12:00:00,最终目标是2019-11-10 12:00:00 我想简单地回显1 年,或者说它是2018-09-10 13:30:00 echo 1 小时 如果时间不到一分钟,就说 1 分钟。

我真的很难找到任何资源来描述如何在没有大量 if 语句的情况下轻松做到这一点。

【问题讨论】:

    标签: php datetime date-difference


    【解决方案1】:

    使用DateTime 类将日期字符串转换为php 对象。然后使用 DateTime::diff() 方法来获取两个日期的差异。您还需要检查 yearmonthdayhourminutesecond 的值以返回预期结果。

    $sDate = "2018-09-10 12:00:00";
    $eDate = "2019-11-10 12:00:00";
    
    $startDate = new DateTime($sDate);
    $diff = $startDate->diff(new DateTime($eDate));
    
    if ($diff->y > 0) 
        $diffStr = $diff->y." year";
    else if ($diff->m > 0) 
        $diffStr = $diff->m." month";
    else if ($diff->d > 0) 
        $diffStr = $diff->d." day";
    else if ($diff->h > 0) 
        $diffStr = $diff->h." hour";
    else if ($diff->i > 0) 
        $diffStr = $diff->i." minute";
    else if ($diff->s > 0) 
        $diffStr = $diff->i." second";
    else 
        $diffStr = "dates are same";
    
    echo $diffStr;
    

    demo查看结果

    【讨论】:

      【解决方案2】:

      我强烈建议您使用CarbondiffForHumans metod。将所有与日期相关的操作发送至Carbon,让您的生活更轻松。

      【讨论】:

        【解决方案3】:

        其实很简单。如果您使用 SQL,您可以使用 DATEDIFF 并使用 date_format() 格式化结果。

        如果您只是使用 php,则必须从两个日期中创建一个新的 DateTime() 对象。然后你应该可以使用 DateInterval() 减去这两个日期。

        例如:

        $date1 = new DateTime($your1stDate);
        $date2 = new DateTime($your2ndDate);
        $result = $date1->diff($date2);
        echo date_format($result,'Y-m-d h:m.s'); // or something like that
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-26
          相关资源
          最近更新 更多