2008-08-20 8 views
22

ウェブページに「12秒前」や「5分前」などのステータスメッセージを表示する方法を教えてもらえますか?ここPHPウェブページに「12分前」などを表示するには?

+0

この質問は(http://stackoverflow.com/questions/11/how-do-i-calculate-relative-time)[以前に頼ま]して、答えのコード例は、PHPに変換するのは簡単でなければなりません。 – Wedge

+1

これは[このスレッド](http://stackoverflow.com/questions/11/how-do-i-calculate-relative-time)の(C#の焦点の多くではなく)カバーされています。 –

+0

偉大な質問:) – xRobot

答えて

63

が同じためのPHPコードである:

  • 10秒
  • 1分
  • function time_since($since) { 
        $chunks = array(
         array(60 * 60 * 24 * 365 , 'year'), 
         array(60 * 60 * 24 * 30 , 'month'), 
         array(60 * 60 * 24 * 7, 'week'), 
         array(60 * 60 * 24 , 'day'), 
         array(60 * 60 , 'hour'), 
         array(60 , 'minute'), 
         array(1 , 'second') 
        ); 
    
        for ($i = 0, $j = count($chunks); $i < $j; $i++) { 
         $seconds = $chunks[$i][0]; 
         $name = $chunks[$i][1]; 
         if (($count = floor($since/$seconds)) != 0) { 
          break; 
         } 
        } 
    
        $print = ($count == 1) ? '1 '.$name : "$count {$name}s"; 
        return $print; 
    } 
    

    関数は、次のような入力と出力テキストとして秒数を取り

+0

ニース関数:) – AntonioCS

+0

ああ、実際の値でそれらの乗算を変更することを忘れないでください。 ) – AntonioCS

+10

私は好奇心を持っていたので、乗算シーケンスを評価された製品に置き換えるのが約1.2%速くなりました。 –

7
function timeAgo($timestamp){ 
    $datetime1=new DateTime("now"); 
    $datetime2=date_create($timestamp); 
    $diff=date_diff($datetime1, $datetime2); 
    $timemsg=''; 
    if($diff->y > 0){ 
     $timemsg = $diff->y .' year'. ($diff->y > 1?"'s":''); 

    } 
    else if($diff->m > 0){ 
    $timemsg = $diff->m . ' month'. ($diff->m > 1?"'s":''); 
    } 
    else if($diff->d > 0){ 
    $timemsg = $diff->d .' day'. ($diff->d > 1?"'s":''); 
    } 
    else if($diff->h > 0){ 
    $timemsg = $diff->h .' hour'.($diff->h > 1 ? "'s":''); 
    } 
    else if($diff->i > 0){ 
    $timemsg = $diff->i .' minute'. ($diff->i > 1?"'s":''); 
    } 
    else if($diff->s > 0){ 
    $timemsg = $diff->s .' second'. ($diff->s > 1?"'s":''); 
    } 

$timemsg = $timemsg.' ago'; 
return $timemsg; 
} 
+0

私はこれの修正版を使用し、私は)($ DATETIME2 =新しいのDateTimeとdate_createラインを置き換えます。 $ datetime2-> setTimestamp($ timestamp); とsストリングの前にすべてのアポストロフィを削除しました – Oliverb

3

PHPの\DateTime::diffは、公開iプロパティで分を得ることができる\DateIntervalオブジェクトを返します。

関連する問題