PHPウェブページに「12分前」などを表示するには?


22

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

  0

偉大な質問:) 24 4月. 132013-04-24 12:30:28

  0

良いjqueryプラグインがあります:timeago.js 27 4月. 132013-04-27 04:46:05

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

ニース関数:) 23 8月. 092009-08-23 20:44:54

  0

ああ、実際の値でそれらの乗算を変更することを忘れないでください。 ) 23 8月. 092009-08-23 21:07:39

+10

私は好奇心を持っていたので、乗算シーケンスを評価された製品に置き換えるのが約1.2%速くなりました。 24 8月. 092009-08-24 01:04:06

+5

それだけに関係なく、私は、日付と時刻を変更し、私は日付の代わりに、秒を送信していましたので、私は同じ問題を抱えていた、あまりにも 24 2月. 132013-02-24 18:18:02

+5

@ErikEdgren '33 minutes'を示していません。これを試してください: 'time_since(time() - strtotime($ datetime))' 02 8月. 132013-08-02 15:12:54

  0

TWEAK WITH JUST NOW。関数time_since($以降){ \t $チャンク=配列(アレー(* 365 60 * 60 * 24 '年')、配列(* 30 60 * 60 * 24、 '月')、配列(60 * 60 *配列(60 * 60、 '時')、配列(60、 '分')、配列(1、 '秒')、配列(60 * 60 * ); \t for($ i = 0、$ j = count($ chunks); $ i <$ j; $ i ++){ \t \t $ seconds = $ chunks [$ i] [0]; \t \t $ name = $ chunks [$ i] [1]; \t $ count = floor($ since/$ seconds); \t if($ count!= 0){break;} \t}($ count == 1){\t \t return $ print = '1'。$ name;} else if($ count <1){return \t $ print = '今すぐ'; \t}他{\tリターン$印刷= "$カウント{$名}の";}} 31 1月. 182018-01-31 23:26:33


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ストリングの前にすべてのアポストロフィを削除しました 02 8月. 162016-08-02 09:30:10


3

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