Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Шаблоны (TPL) Как изменить отображение даты последнего входа пользователя?

Как изменить отображение даты последнего входа пользователя?


     20.03.2015    Шаблоны (TPL), Общие вопросы по PHP, Хаки    1320

вопрос
Ребят, всем привет!
Подскажите пожалуйста, как можно сделать в профиле пользователя и подобных в строке "Был на сайте:" отображение даты так, чтобы было не 20 марта 2015 23:19, а, например, 1 час 38 минут назад.
У меня так реализовано в новостях и комментариях при помощи хака "Timeago".
<?php
if(!class_exists('TimeAgo')) {
    
    class TimeAgo {
        
        public function __construct ($data) {
            if(strtotime($data)) {
                $data = strtotime($data);    
            }
            echo $this->timeString($data);
        }
    
        protected function timeInteger($n, &$plurals) {
            $plural = ($n % 10 == 1 && $n % 100 != 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 or $n % 100 >= 20) ? 1 : 2));
            return $plurals[$plural];
        }
    
        protected function timeString($dt, $precision = 2) {
          $times = array(
            365*24*60*60    =>  array("год", "года", "лет"),
            30*24*60*60     =>  array("месяц", "месяца", "месяцев"),
                7*24*60*60      =>  array("неделя", "недели", "недель"),
                24*60*60        =>  array("день", "дня", "дней"),
                60*60           =>  array("час", "часа", "часов"),
                60              =>  array("минута", "минуты", "минут"),
                1               =>  array("секунда", "секунды", "секунд"),
          );
        
          $passed = time() - $dt;
        
          if($passed < 5) {
            $output = ' менее часа назад';
          } else {
            $output = array();
            $exit = 0;
                foreach($times as $period => $name) {
        
                  if($exit >= $precision || ($exit > 0 && $period < 60)) break;
                    $result = floor($passed / $period);
        
                    if ($result > 0) {
                        $output[] = $result . ' ' . $this->timeInteger($result, $name);
                        $passed -= $result * $period;
                        $exit++;
                    } else if ($exit > 0) $exit++;
                }
                $output = implode(' и ', $output).' назад';
            }
            return $output;
        }        
    }
}

new TimeAgo($value);


Помогите пожалуйста переделать под lastdate или хотя бы намекните как-нибудь приближенно :)
Заранее очень благодарен.

Ответа пока нет


Комментарии пользователей (3)

SX2
39

124 | 84

SX2 - 21 марта 2015 10:44 - Юзер

if(date(Ymd, $member_id['lastdate']) == date(Ymd, $_TIME)){
        $tpl->set( '{lasttime}', $lang['time_heute'] . langdate(" в H:i", $member_id['lastdate']));
        } elseif( date( Ymd, $row['date'] ) == date( Ymd, ($_TIME - 86400) ) ){            
        $tpl->set( '{lasttime}', $lang['time_gestern'] . langdate(" в H:i", $member_id['lastdate']));
        } else {            
        $tpl->set( '{lasttime}', langdate("d F в H:i", $member_id['lastdate']));
    }
{lasttime}

if(date(Ymd, $member_id['lastdate']) == date(Ymd, $_TIME)){
        $lasttime = $lang['time_heute'] . langdate(" в H:i", $member_id['lastdate']);
        } elseif( date( Ymd, $row['date'] ) == date( Ymd, ($_TIME - 86400) ) ){            
        $lasttime = $lang['time_gestern'] . langdate(" в H:i", $member_id['lastdate']);
        } else {            
        $lasttime = langdate("d F в H:i", $member_id['lastdate']);
    }
{$lasttime}

Moreno
13

Moreno - 21 марта 2015 13:31 - Юзер

SX2,
Сергей, прошу прощения, это всё одним файлом подключать в шаблон? Что-то не понял)

Moreno
13

Moreno - 25 марта 2015 16:29 - Юзер

Так куда нужно вставить данный код? В function.php?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы