使用 php 以用户友好的格式获取两个日期的差异

Get difference of two date in user friendly format using php

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

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

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

强烈建议您使用Carbon's diffForHumans metod。利用所有与日期相关的操作 Carbon.

,让您的生活更轻松

其实很简单。如果您使用 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

使用DateTime class 将日期字符串转换为php 对象。然后使用 DateTime::diff() 获取两个日期之差的方法。您还需要检查 yearmonthdayhourminutesecond 的值到 return 预期结果.

$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