Итак, для моей базы данных mysql у меня следующий формат даты: 2016-01-21 23:15:00
.
Для своего вывода (php) я пытаюсь изменить его формат на «назад».
Я попытался реализовать этот метод .
Вот как я получаю значение даты:
$d .= $row->date. ',';
Я немного потерял, как преобразовать это в формат «назад».
Какие-либо предложения?
Благодаря!
function ago( $time ){ /* as found on css-tricks */ } $date='2016-01-21 23:15:00'; $timestamp=strtotime($date); echo ago( $timestamp );
Я полагаю, вы не передаете свою переменную функции. Вставьте функцию где-нибудь в свой исполняемый код (в качестве примера вы можете автозагрузить ее как вспомогательный файл через композитор).
$d .= ago($row->date). ',';
Таким образом, вы должны получить то, что вы делаете.
В любом случае для таких реализаций я всегда предпочитаю такие вещи, как Carbon, у которого есть метод, называемый diffForHumans()
который делает именно то, что вы ищете.
Для вычисления времени, прошедшего от времени, вы должны преобразовать их в метку времени. Затем, когда вы вычитаете более старое время с более нового, вы получите время, прошедшее через несколько секунд. Вы можете увидеть пример ниже;
<?PHP header("Content-type: text/plain; charset=utf-8"); $oldTimeStamp = strtotime("2016-01-21 23:15:00"); $nowTimeStamp = time(); echo $oldTimeStamp ."\n"; echo $nowTimeStamp ."\n"; echo ($nowTimeStamp - $oldTimeStamp)." seconds passed"; ?>
Если вы попытаетесь сделать пример своей ситуации;
<?PHP $mysqlTime = strtotime($row->date); $nowTimeStamp = time(); //We use abs because we do not know the $row->date is in future or not ? echo abs($nowTimeStamp - $mysqlTime)." seconds ".($nowTimeStamp < $mysqlTime ? " to time of record" : " passed")."..."; ?>
Вы вычисляете результат в соответствии с вашим форматом, я имею в виду минуту, секунду, день и т. Д. Надеюсь, это поможет.