I am using this script to get the last time a user logged in
function get_last_login($user_id) {
$last_login = get_user_meta($user_id, 'last_login', true);
echo human_time_diff($last_login) . " " . __('ago');
}
I am calling it in author.php with
<p>Last login: <?php get_last_login($userdata->ID); ?></p>
I am trying to output like “last login X days ago” but I can’t get it working.
$last_login output is
2011-05-13 18:00:06
but the final output I get is
last login 15108 days ago
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Are you formatting the mysql2date() input string as 'Y-m-d H:i:s', as specified in the Codex?
Also, why not use this same format as $date_format?
EDIT:
- What output do you get for
$last_login? - The second argument in
human_time_diff()is optional. Why not just omit it? That way, if you get valid output from$last_login, you should get valid output fromhuman_time_diff().
EDIT:
The human_time_diff() function expects a UNIX timestamp for its first argument. Try wrapping $last_login in mktime(), e.g.:
$last_login_unix = mktime( $last_login ); human_time_diff( $last_login_unix );
EDIT:
Might want to use strtotime() instead of mktime():
$last_login_unix = strtotime( $last_login ); human_time_diff( $last_login_unix );
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0