Image

Imagewisn wrote in Imagephp

Time handling problem

I want to report back to the user how long it's been since their last login. I'm having a problem processing the time, though.
$query = "SELECT DATE_FORMAT(date_last,'%c-%d-%Y %k:%i:%S') dl, 
DATE_FORMAT(NOW(),'%c-%d-%Y %k:%i:%S') dn FROM people WHERE 
(user_id=$id AND password=PASSWORD('$pass') )";
$result = mysql_query($query);
if (mysql_num_rows($result)==1) {
    while ($row=mysql_fetch_array($result)) {
        $lasttime = $row['dl'];
        $nowtime = $row['dn'];
        $timediff = round((strtotime($nowtime) - strtotime($lasttime)) / (60*60));
        echo "You last logged in $timediff hours ago.";
    }
}

Here is what I get:
// $nowtime == string(18) "7-21-2005 10:51:40"
// strtotime($nowtime) == int(1393429900)
// $lasttime == string(18) "7-20-2005 21:21:59"
// strtotime($lasttime) == int(1390789319)
You last logged in 733 hours ago 

I had understood that strtotime() will parse GNU standard date formats into seconds, so I had assumed multiplying the difference in dates by 1200 would get the difference in hours.

I don't understand why I'm getting 733 hours offset instead of 13. Can anybody tell me what I've got wrong here?
Edit: A saner MySQL query does the trick. Thanks to those who helped.