我的代码如下:
$post_date = '2017-11-15 21:04:31';
$now = new DateTime();
$units = 7;
echo timespan($post_date, $now, $units);
它让我回答:
问了47年,10个月,2个星期,1天,23个小时,53分钟
来自哪里47年?
更新
我想计算自$ post_date以来的活跃时间之间的差异。例如$post_date = '2017-11-15 21:04:31';
它应该是自发布以来的1天,8小时,9分钟。
我该如何解决?
答案 0 :(得分:2)
您可以使用diff
。
<强>代码强>
$post_date= new DateTime("2017-11-15 21:04:31");
$now = new DateTime();
$diff = $now->diff($post_date);
echo "Days: " . $diff->days . " Hours: " . $diff->h . " Minutes: " . $diff->i;
<强>输出:强>
Days: 1 Hours: 8 Minutes: 39
适用于print_r结果
echo"<pre>";
print_r($diff);
DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 8
[i] => 39
[s] => 22
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 1
[days] => 1
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
答案 1 :(得分:1)
Epoctime时间从1970年1月1日午夜开始,所以你的函数从该日期起返回时间跨度。
自1970年以来已过去47年。澄清你想要达到的目标,以便我们能够提供更好的帮助。