Время назад PHP с текущей отметкой времени - PullRequest
0 голосов
/ 10 июня 2018

Я француз, и этот текст поступил от онлайн-переводчика.Заранее извиняюсь за орфографические ошибки.

Контекст: я пытаюсь отобразить на странице разницу во времени между созданием моей статьи и датой дня.Создайте систему, аналогичную Facebook, для комментариев.

Пример "1 день назад".

Проблема: Когда я применяю свою функцию к своей статье, она всегда показывает мне "только сейчас", даженесколько минут спустяЯ могу копать голову, но я не понимаю этого.Можете ли вы привести меня к треку?

Вот элементы, которые могут вам помочь.

Мой метод в моем классе статьи:

enter code here  public function getDate_creation() {
    return $this->date_creation;
}

public function articleTimeAgo()
{
    $time_ago = strtotime($this->getDate_creation());
    $current_time = time();
    $time_difference = $current_time - $time_ago;
    $seconds = $time_difference;
    $minutes      = round($seconds / 60 );           // value 60 is seconds
    $hours           = round($seconds / 3600);           //value 3600 is 60 minutes * 60 sec
    $days          = round($seconds / 86400);          //86400 = 24 * 60 * 60;
    $weeks          = round($seconds / 604800);          // 7*24*60*60;
    $months          = round($seconds / 2629440);     //((365+365+365+365+366)/5/12)*24*60*60
    $years          = round($seconds / 31553280);     //(365+365+365+365+366)/5 * 24 * 60 * 60
    if($seconds <= 60)
    {
        return "Just Now";
    }
    else if($minutes <=60)
    {
        if($minutes==1)
        {
            return "one minute ago";
        }
        else
        {
            return "$minutes minutes ago";
        }
    }
    else if($hours <=24)
    {
        if($hours==1)
        {
            return "an hour ago";
        }
        else
        {
            return "$hours hrs ago";
        }
    }
    else if($days <= 7)
    {
        if($days==1)
        {
            return "yesterday";
        }
        else
        {
            return "$days days ago";
        }
    }
    else if($weeks <= 4.3) //4.3 == 52/12
    {
        if($weeks==1)
        {
            return "a week ago";
        }
        else
        {
            return "$weeks weeks ago";
        }
    }
    else if($months <=12)
    {
        if($months==1)
        {
            return "a month ago";
        }
        else
        {
            return "$months months ago";
        }
    }
    else
    {
        if($years==1)
        {
            return "one year ago";
        }
        else
        {
            return "$years years ago";
        }
    }
}

Мой взгляд:

       <?php if (sizeof($articles) > 0) :
                    foreach ($articles as $article) : ?>
                        <div class="children">
                            <h3><?php echo (empty($article->getAuteur()) ? 'Anonyme' : $article->getAuteur()) ; ?></h3>
                            <p><?php echo $article->getDescription(); ?></p>
                            <span><p><?php echo $article->articleTimeAgo(); ?></p></span>
                        </div>
                    <?php endforeach;
                endif; ?>

У меня есть сомнения относительно формата моих полей в базе данных, поэтому я даю вам формат полей "date_creation":

type = timestamp value = CURRENT_TIMESTAMP.

Надеюсь, я был достаточно ясен.Я остаюсь в вашем распоряжении для любой другой информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...