Time handling problem

    Date: 07/21/05 (PHP Community)    Keywords: mysql, sql

    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.

    Source: http://www.livejournal.com/community/php/323703.html

« IP Throttling || Help merging arrays »


antivirus | apache | asp | blogging | browser | bugtracking | cms | crm | css | database | ebay | ecommerce | google | hosting | html | java | jsp | linux | microsoft | mysql | offshore | offshoring | oscommerce | php | postgresql | programming | rss | security | seo | shopping | software | spam | spyware | sql | technology | templates | tracker | virus | web | xml | yahoo | home