-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' : '');
        }
    }
}

私はその関数を持っていて、UNIX 形式で複数のタイムスタンプを持つ配列を与える SQL の結果を持っているとしましょう。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; 
}

各反復でこのメソッドを呼び出し、DB からタイムスタンプを渡します。

于 2013-01-03T18:19:08.527 に答える