PHP, Сравнивающий временные метки

#php #date #timestamp

#php #Дата #временная метка

Вопрос:

При попытке сравнить с временными метками php я, кажется, получаю значение off. Не уверен, чего мне не хватает.

Я бы хотел, чтобы мой вывод в конечном итоге был чем-то вроде

3 дня 5 часов 10 минут с момента x

Я пробую это с чем-то, что должно иметь разницу всего в несколько минут, но в итоге получаю цифры, которые сильно отличаются (31 день 19 часов 11 минут)

 $timesince = time() - $firstdate;
$dsince = date("d",$timesince);
$hsince = date("G",$timesince);
$msince = date("i",$timesince);
  

Я предполагаю, что есть другой способ, которым мне нужно это сделать?

Комментарии:

1. Что такое $ firstdate? Это временная метка?

2. Да, есть и другая временная метка

Ответ №1:

date() принимает абсолютное значение временной метки, а не разницу между двумя значениями. Вам нужно проанализировать разницу вручную (разделить на 3600, затем на 60 и т.д.) Здесь есть несколько примеров в комментарияхhttp://php.net/manual/en/function.time.php

Ответ №2:

time() возвращает текущее время в формате временных меток Unix, как вы, вероятно, уже знаете. $firstdate должно быть также в этом формате или его следует преобразовать с помощью strtotime() функции PHP.

Решение, которое вы используете, неверно — это не будет работать для более длительных различий и т.д. Вам нужно произвести некоторые дополнительные вычисления, преобразуя разницу в секундах в разницу, информирующую о днях, часах и минутах.

Редактировать:

Вы можете найти образец и правильное решение в Kohana 3 PHP famework ( span() метод) здесь: http://kohanaframework.org/3.1/guide/api/Kohana_Date#span

Ответ №3:

Вы могли бы попробовать функцию, найденную здесь на php.net .