Дата и время PHP /MYSQL

Wolf56732

Новичок
Разбираюсь с PHP, у меня есть посты в бд, я хочу реализовать вот такую штуку как на скрине,тойсть после добавление начинался обратный отсчет когда добавлен,(1 с назад, 1 день назад и тд) но пока что не понимаю как это сделать,если у кого то есть статьи или ещё что то на эту тему помогите
 

AnrDaemon

Продвинутый новичок
При чём тут PHP? это делается на клиенте через JS.
 

Wolf56732

Новичок
При чём тут PHP? это делается на клиенте через JS.
тойсть на пхп нельзя такое делать ? я думал это это что то например,в бд есть ячейка с временем . а потом уже в выводе с этим временем происходят какие то действия и получается такой результат
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
При чём тут PHP? это делается на клиенте через JS.
Ты не прав. Это не счетчик у него же. Просто дата.

ТС, считай разницу между "сейчас" и "датой поста".

Если разница в минутах до 60 - показываешь минуты, если больше делаешь ветвление логики как тебе надо: на дни, недели, месяцы и годы.
 

Wolf56732

Новичок
Ты не прав. Это не счетчик у него же. Просто дата.

ТС, считай разницу между "сейчас" и "датой поста".

Если разница в минутах до 60 - показываешь минуты, если больше делаешь ветвление логики как тебе надо: на дни, недели, месяцы и годы.
А в базе данных какое поле делать ? ну точнее как сделать что бы поле само проставляло время, вот так как на срине не получается ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ты в мануал сгоняй и почитай про типы полей, как хранятся и прочее. И поймешь, что тебе нужен не TIME
 

WMix

герр M:)ller
Партнер клуба
Ты не прав. Это не счетчик у него же. Просто дата.
по мне это view и может быть клиентской функцией


на край в твиг
PHP:
$twig->addFunction(new \Twig_SimpleFunction('time_elapsed_string', function ($datetime, $full = false) {
    $now = new DateTime;
    $ago = new DateTime($datetime);
    $diff = $now->diff($ago);

    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;

    $string = array(
        'y' => 'year',
        'm' => 'month',
        'w' => 'week',
        'd' => 'day',
        'h' => 'hour',
        'i' => 'minute',
        's' => 'second',
    );
    foreach ($string as $k => &$v) {
        if ($diff->$k) {
            $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
        } else {
            unset($string[$k]);
        }
    }

    if (!$full) $string = array_slice($string, 0, 1);
    return $string ? implode(', ', $string) . ' ago' : 'just now';
}));
Код:
{{ time_elapsed_string('2012-12-12') }}
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Я все же на время на сервере больше полагаюсь, чем на клиенте)
 

Фанат

oncle terrible
Команда форума
Разбираюсь с PHP, у меня есть посты в бд, я хочу реализовать вот такую штуку как на скрине,тойсть после добавление начинался обратный отсчет когда добавлен,(1 с назад, 1 день назад и тд) но пока что не понимаю как это сделать,если у кого то есть статьи или ещё что то на эту тему помогите
Гугления скилл незаменимый оттачивай, юный падаван
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
ну, сервер вернул в ISO, а клиент форматирует в нужный формат
Я о том, что на клиенте может неверное время быть и это повлияет на результат. Недавно знакомые позвали "комп посмотреть", а там было все, что душе угодно. В том числе и сбитое время, и куча проблем из-за этого. Редкость конечно, но все же.
 

Фанат

oncle terrible
Команда форума
а я гуглил, но не нашел,нужного поэтому сюда пошёл
Поэтому я и написал, что надо оттачивать скилл
Гуглить не так просто, как ты думаешь. И в первую очередь надо учиться формулировать словами, что тебе надо.
Как только сможешь осмысленно сформулировать свою задачу, а не "мне надо это, чтобы было", то и Гугль сразу заработает и будет находить все что тебе нужно.
Я понимаю, что милленниалу проще картинками общаться, но ИИ пока не дошел до распознавания желаний по картинкам.
А вот слова гугль понимает прекрасно. Давай попробуем вместе.
Тебе нужен код на похапе, который выводит сколько времени прошло словами? Вот так и пишешь:
https://www.google.com/search?q=php+сколько+времени+прошло+словами
Видишь - совсем просто
 

fixxxer

К.О.
Партнер клуба
Я о том, что на клиенте может неверное время быть и это повлияет на результат. Недавно знакомые позвали "комп посмотреть", а там было все, что душе угодно. В том числе и сбитое время, и куча проблем из-за этого. Редкость конечно, но все же.
Далеко не редкость.
Я во всяких штуках, когда время события важно, всегда отдаю UTC время с сервера и делаю поправку. Во всяких реалтаймовых вебсокетных штуках даже делаю поправку на пинг. :)
 

WMix

герр M:)ller
Партнер клуба
@c0dex мне кажется в 2019 году не доверять таймеру клиента тоже параноя. (не сообразил что для обратного отчета now нужен)
 
Сверху