【问题标题】: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() 方法来获取两个日期的差异。您还需要检查 year、month、day、hour、minute 和 second 的值以返回预期结果。
$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查看结果
【解决方案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