如何修复Timeago错误

时间:2016-11-07 05:10:56

标签: php

我有一段时间以前在php中的功能,如果用户在线或上次看到用户,我会用它返回。

function tj_online_last($ptime) {
    $estimate_time = time() - strtotime($ptime);
    // if time diff is less than 1 minute then user is online
    if ($estimate_time < 60) {
        return 'online';
    }
    $condition = array(
                12 * 30 * 24 * 60 * 60   => 'year',
                30 * 24 * 60 * 60        => 'month',
                24 * 60 * 60             => 'day',
                60 * 60                  => 'hour',
                60                       => 'minute',
                1                        => 'second',
    );
    foreach($condition as $secs => $str) {
        $d = $estimate_time / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r.' '.$str.($r > 1 ? 's' : '').' ago';
        } 
    }
}

现在问题是,当用户第一次没有登录他的帐户时,时间值为“空”&#39;我想回来“永远不会”。而不是令人烦恼的48年前&#39;因为我无法处理错误。

1 个答案:

答案 0 :(得分:0)

试试这个...... 当用户第一次登录时,它的最后一个条目为空,因此您需要检查条件if上次日期为空then return 'never';

function tj_online_last($ptime) {
    if(strtotime($ptime) <= 0){
        return 'never';
    }
    $estimate_time = time() - strtotime($ptime);
    // if time diff is less than 1 minute then user is online
    if ($estimate_time < 60) {
        return 'online';
    }
    $condition = array(
                12 * 30 * 24 * 60 * 60   => 'year',
                30 * 24 * 60 * 60        => 'month',
                24 * 60 * 60             => 'day',
                60 * 60                  => 'hour',
                60                       => 'minute',
                1                        => 'second',
    );
    foreach($condition as $secs => $str) {
        $d = $estimate_time / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r.' '.$str.($r > 1 ? 's' : '').' ago';
        } 
    }
}