-1
function timeago($ptime) {
    $etime = time() - $ptime;

    if ($etime < 1) {
        return '0 seconds';
    }

    $a = array( 12 * 30 * 24 * 60 * 60  =>  'year',
                    30 * 24 * 60 * 60       =>  'month',
                    24 * 60 * 60            =>  'day',
                    60 * 60                 =>  'hour',
                    60                      =>  'minute',
                    1                       =>  'second'
                    );

    foreach ($a as $secs => $str) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r . ' ' . $str . ($r > 1 ? 's' : '');
        }
    }
}

假设我有那个功能,并且我有一个 sql 结果,它给了我一个具有 UNIX 形式的多个时间戳的数组。使用 while 循环,我如何为每个时间戳使用此函数,以便每个循环结果将包含每个 sql UNIX 时间戳的时间之前?

4

1 回答 1

0

您可以使用 DateTime 类。

function timeAgo($ptime){
   $date1 = DateTime::createFromFormat("s", $ptime);//HOPE THIS WILL WORK
   $date2 = new DateTime("now");
   $interval = $date1->diff($date2);
   $diff = $interval->format('%y-%m-%d');
   return $diff; 
}

在每次迭代中调用此方法并从数据库中传递时间戳。

于 2013-01-03T18:19:08.527 回答