为什么这段代码没有正确输出?

时间:2015-01-23 11:25:29

标签: php mysql

我已经制作了这个代码来获取两个日期之间的差异,但它无法正常工作。如何更正此代码请帮助我。

  • 在我的数据库中,上次登录时间保存如下

2015-01-23 15:28:05

2015-01-23 15:28:07

2015-01-23 15:29:24

2015-01-23 15:28:01

这是我写的代码

$sql="SELECT * FROM users";
$sql_query=mysql_query($sql);
$cur_date=date('Y-m-d H:i:s');

while($data=mysql_fetch_array($sql_query))
{

$last_date=$data['last_login_time'];
echo $last_date;
echo "<br>";

$date1 = new DateTime($last_date);
$date2 = new DateTime($cur_date);
$interval = $date1->diff($date2);
echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; 
echo "<br>";
}

输出我是这样的

2015-01-23 15:28:05
difference 0 years, 0 months, 0 days
2015-01-23 15:28:07
difference 0 years, 0 months, 0 days
2015-01-23 15:29:24
difference 0 years, 0 months, 0 days
2015-01-23 15:28:01
difference 0 years, 0 months, 0 days 

请有人帮帮我。

得到答案 我没有使用interval-> h,interval-&gt; i和interval-&gt; s。在使用interval-&gt; h之后,interval-&gt; i和interval-&gt; s代码完美地工作。感谢大家。抱歉让你的时间充足

1 个答案:

答案 0 :(得分:2)

尝试使用此代码

$sql="SELECT * FROM users";
$sql_query=mysql_query($sql);
$cur_date=date('Y-m-d H:i:s');

while($data=mysql_fetch_array($sql_query))
{

$lastDate=date("Y-m-d",strtotime($data['last_login_time']));
$currentDate = date("Y-m-d");

$dateDiff = abs(strtotime($currentDate) - strtotime($lastDate));

$years = floor($dateDiff / (365*60*60*24));
$months = floor(($dateDiff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($dateDiff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

echo $years.'-'.$months.'-'.$days;

}