2016-02-23 157 views
0

我已经创建了一个函数来显示两个日期之间的差异:实际和从数据库。PHP日期 - 从返回日期的返回时间差异

我有以下代码:

$date_a = new DateTime('now'); 
$date_b = new DateTime($Time); 

$interval = date_diff($date_b, $date_a); 

if ($interval->format('%m') >= 1) { 
    return 'Dodano: ' . $interval->format('%m') . ' miesięcy temu'; 
} elseif ($interval->format('%d') >= 1) { 
    return 'Dodano: ' . $interval->format('%d') . ' dni temu'; 
} elseif ($interval->format('%h') >= 1) { 
    return 'Dodano: ' . $interval->format('%h') . ' godz. temu'; 
} elseif ($interval->format('%i') >= 1) { 
    return 'Dodano: ' . $interval->format('%i') . ' min. temu'; 
} elseif ($interval->format('%s') >= 1) { 
    return 'Dodano: ' . $interval->format('%s') . ' sekund temu'; 
} 

月,日,小时和分钟都OK,但秒显示:

Dodano: 59 min. temu 

Dodano: n sekund temu 

为什么?

+0

你可以创建一个php小提琴吗? http://phpfiddle.org/ –

+0

我刚刚在我的服务器上试了一下,并感到困惑,因为我有同样的错误。看到问题是你的服务器时间与你认为的不同。这很可能是一小时提前(var_dump $ date_a,你会看到) –

+0

好的,这是我的服务器(-1小时)不好的时间,谢谢 – Vertisan

回答

0

由于您的服务器时间不是您想象的那么您的$ date_a早了一个小时。

我在我的服务器上试过它时也感到困惑,但在var_dump-$ date_a之后,显然这是问题所在。

希望这能为你解决它。

-1

您需要调用DateInterval :: format()以字符串形式显示该差异。 将以下行添加到您的代码中。 $ interval-> format('Y-m-d H:i:s');