2016-02-12 2 views
0

У меня есть функция, которая возвращает, как давно было опубликовано время, но, похоже, есть небольшая проблема с ней. В первый раз $ timeAgo1 работает нормально, но во второй раз $ timeAgo2, похоже, возвращает отрицательные секунды. Как это происходит?Функция TimeAgo, возвращающая отрицательные секунды

<?php 

//*****************************************************START OF FUNCTION 
function timeAgo($time_ago) { 

    $time_ago = strtotime($time_ago); 
    $cur_time = time(); 
    $time_elapsed = $cur_time - $time_ago; 
    $seconds = $time_elapsed ; 
    $minutes = round($time_elapsed/60); 
    $hours = round($time_elapsed/3600); 
    $days = round($time_elapsed/86400); 
    $weeks = round($time_elapsed/604800); 
    $months = round($time_elapsed/2600640); 
    $years = round($time_elapsed/31207680); 

    echo $seconds."<br>"; 
    if ($seconds <= 60) { 
     return "just now"; 
    } //end of if ($seconds <= 60) 

    else if ($minutes <=60) { 
     if ($minutes == 1) { 
      return "one minute ago"; 
     } //end of else if ($minutes <=60) 
     else { 
      return "$minutes minutes ago"; 
     } //end of else not ($minutes == 1) 
    } //end of else if ($minutes <= 60) 


    else if ($hours <= 24) { 
     if ($hours == 1) { 
      return "an hour ago"; 
     } //end of if ($hours == 1) 
     else { 
      return "$hours hours ago"; 
     } //end of else not ($hours == 1) 
    } //end of else if ($hours <= 24) 


    else if ($days <= 7) { 
     if ($days == 1) { 
      return "yesterday"; 
     } //end of else if ($days <= 7) 
     else { 
      return "$days days ago"; 
     } //end of else not ($days == 1) 
    } //end of else if ($days <= 7) 

    else if ($weeks <= 4.3) { 
     if ($weeks == 1) { 
      return "a week ago"; 
     } //end of if ($weeks == 1) 
     else { 
      return "$weeks weeks ago"; 
     } //end of else not ($weeks == 1) 
    } //end of else if ($weeks <= 4.3) 


    else if ($months <= 12) { 
     if ($months == 1) { 
      return "a month ago"; 
     } //end of if ($months == 1) 
     else { 
      return "$months months ago"; 
     } //end of else not ($months == 1) 
    } //end of else if ($months <= 12) 

    else { 
     if ($years == 1) { 
      return "one year ago"; 
     } //end of if ($years == 1) 
     else { 
      return "$years years ago"; 
     } //end of else not ($years == 1) 
    } //end of last else 

} //end of function timeAgo($time_ago) 
//*****************************************************END OF FUNCTION 

$date1 = "2016-02-10"; 
$time1 = "22:41:58"; 
$date2 = "2016-02-12"; 
$time2 = "15:25:57"; 

$timeAgo1 = timeAgo($date1.$time1); 
$timeAgo2 = timeAgo($date2.$time2); 

echo $timeAgo1."<br>".$timeAgo2; 

?> 

ответ

0

Это, вероятно, что-то с сервером, потому что я использовал 2 разных серверов и результаты

166733 
20094 
2 days ago 
6 hours ago 

Вполне возможно, что ваш сервер находится в другом месте, чем вы, так что time(); функция показывает другая временная метка от того, что вы ожидаете.

Отметка второго timeAgo является 1455290705, чтобы ваш сервер, вероятно, находится где-то, где он/был больше, чем 1455290705.

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