#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 .