function TimeAgo

baceto90

Registered
Функцията връща изминалото време от дадено събитие подобно на Facebook. Дава ми някакви грешки и не знам как да ги оправя. Не съм е писал аз тази фунция и ако може някой да е оправи ще съм му благодарен.
Код:
function TimeAgo($datefrom,$dateto=-1)
{
 
  // Началната дата е 01.01.1970
  if($datefrom<=0) { return "Преди много време"; }
  if($dateto==-1) { $dateto = time(); }
 
  // Разлика в секунди между датите
  $difference = $dateto - $datefrom;
 
  // Ако разликата е под минута, показваме секундите
  if($difference < 60)
  {
    $interval = "s";
  }
 
  // Ако интервала е между 1 и 60 минути показваме минутите
  elseif($difference >= 60 && $difference<60*60)
  {
    $interval = "n";
  }
 
  // Ако интервала е между 1 и 24 часа, показваме часовете
  elseif($difference >= 60*60 && $difference<60*60*24)
  {
    $interval = "h";
  }
 
  // Ако е в рамките на седмицата, показваме дните
  elseif($difference >= 60*60*24 && $difference<60*60*24*7)
  {
    $interval = "d";
  }
 
  // Ако е между 1 и 30 дена, показваме седмиците
  elseif($difference >= 60*60*24*7 && $difference <
  60*60*24*30)
  {
    $interval = "ww";
  }
 
  // Ако интервала е между 30 дена и 1 година показваме месеците
  elseif($difference >= 60*60*24*30 && $difference <
  60*60*24*365)
  {
    $interval = "m";
  }
 
  // Ако интервала е над 365 дена показваме годините
  elseif($difference >= 60*60*24*365)
  {
    $interval = "y";
  }
 
  /*
   * На база на интервала определяме броя единици
   * между датите.Също така определяме думичките
   * за ед./мн. число (ако е 1 или са повече)
   */
 
  switch($interval)
  {
    case "m":
      $months_difference = floor($difference / 60 / 60 / 24 /
      29);
      while (mktime(date("H", $datefrom), date("i", $datefrom),
      date("s", $datefrom), date("n", $datefrom)+($months_difference),
      date("j", $dateto), date("Y", $datefrom)) < $dateto)
      {
        $months_difference++;
      }
      $datediff = $months_difference;
 
      // We need this in here because it is possible
      // to have an 'm' interval and a months
      // difference of 12 because we are using 29 days
      // in a month
 
      if($datediff==12)
      {
        $datediff--;
      }
 
      $res = ($datediff==1) ? "преди месец" : "преди $datediff месеца";
      break;
 
    case "y":
      $datediff = floor($difference / 60 / 60 / 24 / 365);
      $res = ($datediff==1) ? "преди година" : "преди $datediff години";
      break;
 
    case "d":
      $datediff = floor($difference / 60 / 60 / 24);
      $res = ($datediff==1) ? "преди един ден" : "преди $datediff дена";
      break;
 
    case "ww":
      $datediff = floor($difference / 60 / 60 / 24 / 7);
      $res = ($datediff==1) ? "преди седмица" : "преди $datediff седмици";
      break;
 
    case "h":
      $datediff = floor($difference / 60 / 60);
      $res = ($datediff==1) ? "преди час" : "преди $datediff часа";
      break;
 
    case "n":
      $datediff = floor($difference / 60);
      $res = ($datediff==1) ? "преди минута" : "преди $datediff минути";
      break;
 
    case "s":
      $datediff = $difference;
      $res = ($datediff==1) ? "перди секунда" : "перди $datediff секунди";
      break;
  }
  return $res;
}
 
Няма да е зле да си заместиш > с > и < с < преди да се опитваш да правиш нещо с този код. Също така разгледай и за други знаци, които може да ти замества когато си копирал кода.
 
Код:
function TimeAgo($datefrom,$dateto=-1) 
{ 
  
  // Началната дата е 01.01.1970 
  if($datefrom <= 0) { return "Преди много време"; } 
  if($dateto == -1) { $dateto = time(); } 
  
  // Разлика в секунди между датите 
  $difference = $dateto - $datefrom; 
  
  // Ако разликата е под минута, показваме секундите 
  if($difference < 60) 
  { 
    $interval = "s"; 
  } 
  
  // Ако интервала е между 1 и 60 минути показваме минутите 
  elseif($difference >= 60 && $difference < 60*60) 
  { 
    $interval = "n"; 
  } 
  
  // Ако интервала е между 1 и 24 часа, показваме часовете 
  elseif($difference >= 60*60 && $difference < 60*60*24) 
  { 
    $interval = "h"; 
  } 
  
  // Ако е в рамките на седмицата, показваме дните 
  elseif($difference >= 60*60*24 && $difference < 60*60*24*7) 
  { 
    $interval = "d"; 
  } 
  
  // Ако е между 1 и 30 дена, показваме седмиците 
  elseif($difference >= 60*60*24*7 && $difference < 60*60*24*30) 
  { 
    $interval = "ww"; 
  } 
  
  // Ако интервала е между 30 дена и 1 година показваме месеците 
  elseif($difference >= 60*60*24*30 && $difference < 60*60*24*365) 
  { 
    $interval = "m"; 
  } 
  
  // Ако интервала е над 365 дена показваме годините 
  elseif($difference >= 60*60*24*365) 
  { 
    $interval = "y"; 
  } 
  
  /* 
   * На база на интервала определяме броя единици 
   * между датите.Също така определяме думичките 
   * за ед./мн. число (ако е 1 или са повече) 
   */ 
  
  switch($interval) 
  { 
    case "m": 
      $months_difference = floor($difference / 60 / 60 / 24 / 
      29); 
      while (mktime(date("H", $datefrom), date("i", $datefrom), 
      date("s", $datefrom), date("n", $datefrom)+($months_difference), 
      date("j", $dateto), date("Y", $datefrom)) < $dateto) 
      { 
        $months_difference++; 
      } 
      $datediff = $months_difference; 
  
      // We need this in here because it is possible 
      // to have an 'm' interval and a months 
      // difference of 12 because we are using 29 days 
      // in a month 
  
      if($datediff==12) 
      { 
        $datediff--; 
      } 
  
      $res = ($datediff==1) ? "преди месец" : "преди $datediff месеца"; 
      break; 
  
    case "y": 
      $datediff = floor($difference / 60 / 60 / 24 / 365); 
      $res = ($datediff==1) ? "преди година" : "преди $datediff години"; 
      break; 
  
    case "d": 
      $datediff = floor($difference / 60 / 60 / 24); 
      $res = ($datediff==1) ? "преди един ден" : "преди $datediff дена"; 
      break; 
  
    case "ww": 
      $datediff = floor($difference / 60 / 60 / 24 / 7); 
      $res = ($datediff==1) ? "преди седмица" : "преди $datediff седмици"; 
      break; 
  
    case "h": 
      $datediff = floor($difference / 60 / 60); 
      $res = ($datediff==1) ? "преди час" : "преди $datediff часа"; 
      break; 
  
    case "n": 
      $datediff = floor($difference / 60); 
      $res = ($datediff==1) ? "преди минута" : "преди $datediff минути"; 
      break; 
  
    case "s": 
      $datediff = $difference; 
      $res = ($datediff==1) ? "перди секунда" : "перди $datediff секунди"; 
      break; 
  } 
  return $res; 
}

айдее..
 
Този код го слагам в моя php файл и когато искам да го активирам пиша TimeAgo(); ?
Преди кода слагам
$dateto = днескашната дата;
$datefrom = датата от mysql;
така ли е ? защотот не става ?
Моля помогнете ми
 

Back
Горе