За последние 24 часа нас посетили 22356 программистов и 1049 роботов. Сейчас ищут 697 программистов ...

Скрипт «Сколько времени прошло»

Тема в разделе "Вопросы от блондинок", создана пользователем Sofia, 8 июл 2018.

  1. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Подскажите пожалуйста, почему скрипт не отображает данные?
    PHP:
    1. <?
    2. $date = '1130371200';
    3. function showDate( $date ) // $date --> время в формате Unix time
    4. {
    5.     $stf      = 0;
    6.     $cur_time = time();
    7.     $diff     = $cur_time - $date;
    8.  
    9.     $seconds = array( 'секунда', 'секунды', 'секунд' );
    10.     $minutes = array( 'минута', 'минуты', 'минут' );
    11.     $hours   = array( 'час', 'часа', 'часов' );
    12.     $days    = array( 'день', 'дня', 'дней' );
    13.     $weeks   = array( 'неделя', 'недели', 'недель' );
    14.     $months  = array( 'месяц', 'месяца', 'месяцев' );
    15.     $years   = array( 'год', 'года', 'лет' );
    16.     $decades = array( 'десятилетие', 'десятилетия', 'десятилетий' );
    17.  
    18.     $phrase = array( $seconds, $minutes, $hours, $days, $weeks, $months, $years, $decades );
    19.     $length = array( 1, 60, 3600, 86400, 604800, 2630880, 31570560, 315705600 );
    20.  
    21.     for ( $i = sizeof( $length ) - 1; ( $i >= 0 ) && ( ( $no = $diff / $length[ $i ] ) <= 1 ); $i -- ) {
    22.         ;
    23.     }
    24.     if ( $i < 0 ) {
    25.         $i = 0;
    26.     }
    27.     $_time = $cur_time - ( $diff % $length[ $i ] );
    28.     $no    = floor( $no );
    29.     $value = sprintf( "%d %s ", $no, getPhrase( $no, $phrase[ $i ] ) );
    30.  
    31.     if ( ( $stf == 1 ) && ( $i >= 1 ) && ( ( $cur_time - $_time ) > 0 ) ) {
    32.         $value .= time_ago( $_time );
    33.     }
    34.  
    35.     return $value;
    36. }
    37.  
    38. function getPhrase( $number, $titles ) {
    39.     $cases = array( 2, 0, 1, 1, 1, 2 );
    40.  
    41.     return $titles[ ( $number % 100 > 4 && $number % 100 < 20 ) ? 2 : $cases[ min( $number % 10, 5 ) ] ];
    42. }
    43.  
    44. ?>
     
  2. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    видимо потому, что вы не вызвали функцию
     
  3. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    а как это сделать? Покажите плз.
     
  4. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    ну в вашем случае

    PHP:
    1. echo showDate($date);
     
    Sofia нравится это.
  5. Ondottr

    Ondottr Новичок

    С нами с:
    24 ноя 2017
    Сообщения:
    46
    Симпатии:
    5
    PHP:
    1. class time {
    2.  
    3.   public function getTime($time)
    4.      {
    5.          $d = new DateTime($time);
    6.          $date = new DateTime("now");
    7.          $interval = $d->diff($date);
    8.  
    9.          $res = "";
    10.          if($interval->m !== 0) {
    11.              $res = ($interval->m. " м. ");
    12.          }
    13.          if($interval->d !== 0) {
    14.              $res .= ($interval->d. " д. ");
    15.          }
    16.          if($interval->h !== 0) {
    17.              $res .= ($interval->h. " ч. ");
    18.          }
    19.          if($interval->i !== 0) {
    20.              if ($interval->m == 0) {
    21.                  $res .= ($interval->i. " мин. ");
    22.              }
    23.          }
    24.          if($interval->s !== 0) {
    25.              if ($interval->d == 0) {
    26.                  $res .= ($interval->s. " сек. ");
    27.              }
    28.              echo $res;
    29.          }
    30.      }
    31.  
    32. }
    33. $time = new time();
    Так не пойдет??