-1

Facebook、Twitter、および他の多くのサイトが、ユーザーの投稿とコメントに相対的な日付と時刻の文字列の説明を使用していることに気づきました。

たとえば、「2012年9月20日に書かれたコメント」ではなく、「約3か月前に書かれたコメント」です。私は自分のサイトで同じことをすることにしました。私のサイトでは、1日前、2日前、3日前、...... 1週間前、2週間前、.... 1か月前、2か月前、....。 。1年前、2年前...など。

すでにユーザー登録日があり、現在の日時で確認する必要があり、ホームページに上記のスタイルで表示する必要があります。

私のデータベースでは、ユーザー登録の日付形式は次のようになっています.. '2012-09-23 09:11:02'

誰かが私がこのスクリプトをphpで構築するのを手伝ってくれるでしょうか...そしてそれは大いに応用されるでしょう。

ありがとうございました。

4

3 に答える 3

1

これで試してください

function time_ago($time) {

   $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
   $lengths = array("60","60","24","7","4.35","12","10");

   $now = time();

   $difference = $now - $time;
   $tense = "ago";

   for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
        $difference /= $lengths[$j];
   }

   $difference = round($difference);

   if($difference != 1) {
        $periods[$j].= "s";
   }

   return "$difference $periods[$j] 'ago' ";
}
于 2012-09-26T07:36:51.810 に答える
1

次のコードを試してください。

function time_elapsed_since ($postedDateTime){

    $time = time() - $postedDateTime; // to get the time since that moment

         $tokens = array (
                      31536000 => 'year',
                      2592000 => 'month',
                      604800 => 'week',
                      86400 => 'day',
                      3600 => 'hour',
                      60 => 'minute',
                      1 => 'second'
                  );

                  foreach ($tokens as $unit => $text) {
                      if ($time < $unit) continue;
                      $numberOfUnits = floor($time / $unit);
                      return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
                  }

    }

使用法:

time_elapsed_since($postedDateTime).' ago'; // 2012-09-23 09:11:02 format
于 2012-09-26T07:27:15.077 に答える
0

彼らはunixtime、つまり1970年からの秒数(標準)を使用していると推測しています。日付もその形式に保つ必要があることをお勧めします。UNIX 時間を使用している場合は、PHP で次の日付関数を使用して、上記の形式に変換できます。

<?php
date('Y-m-t H:i:s', $facebookTime);

よろしく、 ケビン

于 2012-09-26T07:41:21.767 に答える