使用 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()
获取两个日期之差的方法。您还需要检查 year
、month
、day
、hour
、minute
和 second
的值到 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
因此,我正在尝试以一种用户友好的方式算出到达 日期时间 的时间长度。
例如,假设当前日期时间是 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()
获取两个日期之差的方法。您还需要检查 year
、month
、day
、hour
、minute
和 second
的值到 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