2014-09-11 2 views
-1

Описание: Я написал следующую функцию, чтобы рассчитать разницу между двумя моментами .. Это показывает очень забавный и странный расчет несколько раз ... Иногда он отлично работает .. Что не так с этим кодом?расчет разницы во времени между текущим временем и ранее сохраненным временем

PHP

function get_the_time_of_post($datetime1,$datetime2) 
{ 
$month = date("F",strtotime($datetime1)); 
$day = date("d",strtotime($datetime1)); 
$a = new DateTime($datetime1); 
$b = new DateTime($datetime2); 
$interval = $a->diff($b); 

$hours = $interval->format("%H"); 
$seconds = $interval->format("%S"); 
$days = $interval->format("%D"); 
$minutes = $interval->format("%I"); 

$date_statement_return = $month." , ".$day; 
if($days == 0) 
{ 
    if($hours == 0) 
    { 
     if($minutes == 0) 
     { 
      if($seconds >= 0 && $seconds <=30) 
      { 

       $date_statement_return = $date_statement_return." <span style = 'font-size: 12px;'> moment ago</span>"; 
      } 
      else 
      { 
       $date_statement_return = $date_statement_return."<span style = 'font-size: 12px;'> ".$seconds." secs ago </span>"; 
      } 
     } 

     else if ($minutes >= 1 && $minutes <= 59) 
     { 
      $date_statement_return = $date_statement_return."<span style = 'font-size: 12px;'> ".$minutes." mins ago </span>"; 
     } 
    } 

    else if ($hours >= 1 && $hours <24) 
    { 
     $date_statement_return = $date_statement_return."<span style = 'font-size: 12px;'> ".$hours." hrs ago </span>"; 
    } 

} 

else if ($days > 0 && $days < 3) 
{ 
    if($days == 1) 
    { 
     $date_statement_return = $date_statement_return."<span style = 'font-size: 12px;'> yesterday </span>"; 
    } 
    else 
    { 
     $date_statement_return = $date_statement_return."<span style = 'font-size: 12px;'> ".$days." days ago </span>"; 
    } 
} 
return $date_statement_return; 
} 
+0

'Это показывает очень забавный и странный расчет несколько раз. Вам нужно сделать больше, чем просто сказать это. * Покажите нам, как он возвращает неверные значения. Как еще мы должны знать, что не так? –

+0

@JohnConde К тому, что я имел в виду случайные изменения в выводе каждый раз, когда вы запускаете функцию ... вот почему я написал «отлично несколько раз». Извините, я должен был показать примеры? –

+0

Да, примеры полезны для диагностики проблема. Вы должны показать примеры, которые работают, и примеры, которые не сработали. –

ответ

1

Вы используете символы в формате, который возвращает значения с ведущими нулями. Это делает сравнение с другими числами неудобным и подверженным ошибкам.

$hours = $interval->format("%h"); 
$seconds = $interval->format("%s"); 
$days = $interval->format("%d"); 
$minutes = $interval->format("%i"); 
+0

Так вот в чем проблема: мои условные утверждения и правильная вложенность? –

+0

Это похоже на проблему, но я не могу сказать, есть примеры того, что работает и что не работает. Протестируйте это и сообщите нам, что произойдет. –

Смежные вопросы