2010-06-29 4 views
2

Je travaille sur un fil d'actualité comme similaire à facebook. Où je compare l'heure où quelque chose s'est passé dans ma table mysql à l'heure actuelle et à la sortie: quelque chose s'est passé il y a une minute.je veux comparer une valeur strtotime à l'heure actuelle et la sortie: il y a quelque chose x min

Tout d'abord je me connecter à mysql avec ce code:

 $conn = db_connect(); 
     $newsfeed = $conn->query("select info, username, time from newsfeed ORDER BY time DESC LIMIT 10"); 
     if (!$newsfeed) { 
     //die(msg(0,"Could not execute query")); 
     } 

Je suis nouveau à mysql si je ne suis pas sûr de cela est correct. Je veux que les 10 dernières mises à jour dans la base de données pour afficher avec les fonctions suivantes avec les dernières mises à jour au-dessus des autres:

 $newsfeed_info_array = $newsfeed->fetch_array(MYSQLI_NUM); 
     $newsfeed_info = $newsfeed_info_array[0]; 
     $newsfeed_username = $newsfeed_info_array[1]; 
     $newsfeed_time= $newsfeed_info_array[2]; 
     $newsfeed_info_split = explode("-", $newsfeed_info); //type and info 

     date_default_timezone_set('Europe/Paris'); 
     $current_time = strtotime("now"); 

     if ($newsfeed_info_split[0] == "reg") 
      { 
          //The next line is the problem 
      $time_diff = date_diff($current_time, $newsfeed_time); 
      echo "<p>User $newsfeed_username just registerted ".date("00:i:s", $newsfeed_time)." min ago</p><br>"; 
      } 

     if ($newsfeed_info_split[0] == "xxx") 
      { 
      echo "blabla x min ago" 
      } 
+0

http://stackoverflow.com/questions/1570752/comment-dites-vous-il-est-arrivé-il-y-a-x-il-y-a-ou-il-y-a-x-days-ago/1570843 # 1570843 – paxdiablo

+0

N'oubliez pas: http: // en.wikipedia.org/wiki/Year_2038_problem – Matthew

Répondre

2

Puisque vous utilisez unix_timespan, il est seulement une question d'utiliser les mathématiques de base :) Unix timespan est le nombre de secondes écoulées depuis le 1er janvier 1970 00:00:00 UTC. http://en.wikipedia.org/wiki/Unix_time


$postTime = $newsfeed_into_array[2]; 
$now = time(); 
$seconds = $now - $postTime; // $seconds now contains seconds since post time 

$minutes = ceil($span/60); // minutes since post time 

vous pouvez également faire une fonction qui imprime quelques secondes, minutes, heures, etc.

+0

merci, maintenant cela fonctionne parfaitement :) – ganjan

2

J'utilise cette (adapté de Codeigniter Forums - Nicer Dates):

if(! function_exists('relative_time')) 
{ 
    function relative_time($datetime) 
    { 
     if(!$datetime) 
     { 
      return "no data"; 
     } 

     if(!is_numeric($datetime)) 
     { 
      $val = explode(" ",$datetime); 
      $date = explode("-",$val[0]); 
      $time = explode(":",$val[1]); 
      $datetime = mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]); 
     } 

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

     if ($difference > 0) 
     { 
      $ending = 'ago'; 
     } 
     else 
     { 
      $difference = -$difference; 
      $ending = 'to go'; 
     } 
     for($j = 0; $difference >= $lengths[$j]; $j++) 
     { 
      $difference /= $lengths[$j]; 
     } 
     $difference = round($difference); 

     if($difference != 1) 
     { 
      $period = strtolower($periods[$j].'s'); 
     } else { 
      $period = strtolower($periods[$j]); 
     } 

     return "$difference $period $ending"; 
    } 


} 
+0

Th C'est une très bonne fonction. avoir quelque chose de similaire, mais c'est un peu plus long. produit des minutes, des secondes, des heures et d'autres choses. va adapter cela pour faire la même chose car c'est vraiment court. – frostymarvelous

Questions connexes