php разница времени в минутах
Разница во времени в формате timestamp
Пытаюсь сделать таймер. Есть время окончания — 2015-05-13 17:00:00.
Нужно посчитать разницу между текущим временем и временем до окончания и запихнуть это всё в переменные:
чтоб в будущем эти переменные подставить в обратный таймер с JavaScript.
4 ответа 4
Буквальный ответ такой:
Но можно передать в JS просто метку времени, а не составляющие.
Нюанс в том, что Javascript работает с милисекундами, а PHP с секундами.
А уже в JS делайте какие-то вычисления.
Вопрос немного размыт (нужно ли полное количество секунд / минут / часов или округленное до минут / часов / дней), поэтому сложно на него ответить. Я буду опираться на то, что требуется полное количество часов и округленное количество минут и секунд.
UNIX Timestamp
Таким образом можно получить необходимые данные с минимальными затратами (математические операции крайне дешевы по сравнению с тем, о чем пойдет речь дальше).
DateInterval
Более верным решением задач с датами является работа с объектами класса DateTime и DateInterval. Эти два класса представляют собой дату и разницу дат соответственно. При простой работе с временной меткой возникает куча неразрешимых вопросов, например:
Из-за особенностей календаря появляется очень много нетривиальных моментов, где просто невзможно работать с разницей дат как с числом секунд. Поэтому в языках программирования вводятся сущности, аналогичные DateTime и DateInterval. В вышеприведенном случае работа с DateTime будет максимально проста:
Дальше пойдут небольшие пляски с бубном. DateInterval представляет собой именно разность дат и не заточен под нужды вопроса и не представляет интерфейса для получения абсолютной разности в тех или иных величинах (кроме точного количества дней). Поэтому придется взять это количество дней и работать с ним:
Как получить разницу во времени в минутах в PHP
Как рассчитать разницу между двумя датами в PHP?
Вычитайте прошлое больше всего из будущего самого первого и разделите его на 60.
Времена сделаны в формате Unix, поэтому они представляют собой просто большое число, показывающее количество секунд с January 1, 1970, 00:00:00 GMT
Ответы выше для более старых версий PHP. Используйте класс DateTime для выполнения любых вычислений даты, когда PHP 5.3 является нормой. Например.
Вышеприведенный код выводит:
Всего 1837 дней
5 лет
0 месяцев
10 дней
6 часов
14 минут
2 секунды
Чтобы получить общее количество минут:
Это приведет к выводу:
Каково фактическое количество минут, прошедших между двумя датами. Класс DateTime будет учитывать летнее время (в зависимости от часового пояса), где «старый путь» не будет. Прочтите руководство по дате и времени http://www.php.net/manual/en/book.datetime.php
Вы получаете то, что хотите.
другой способ с часовым поясом.
Я думаю, это поможет вам
Я написал эту функцию для одного моего сайта блога (разница между прошлой датой и датой сервера). Это даст вам результат, подобный этому
«49 секунд назад», «20 минут назад», «21 час назад» и т. Д.
Я использовал функцию, которая бы меня разницу между датой и датой сервера.
Сохраните его, как файл, «date.php». Вызовите функцию с другой страницы, как это
Конечно, вы можете изменить функцию для передачи двух значений.
Более универсальная версия, которая возвращает результат в дни, часы, минуты или секунды, включая дроби / десятичные знаки:
DateTime::diff
DateTimeInterface::diff
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Описание
Список параметров
Дата и время для сравнения.
Используется, чтобы вернуть абсолютную разницу.
Возвращаемые значения
DateInterval объект представляет разницу между двумя датами или false в случае возникновения ошибки.
Примеры
Пример #1 Пример использования DateTime::diff()
Результат выполнения данных примеров:
Пример #2 Сравнение объектов DateTime
Объекты DateTime могут сравниваться при помощи операторов сравнения.
= new DateTime ( «now» );
$date2 = new DateTime ( «tomorrow» );
Результат выполнения данного примера:
Смотрите также
User Contributed Notes 30 notes
It is worth noting, IMO, and it is implied in the docs but not explicitly stated, that the object on which diff is called is subtracted from the object that is passed to diff.
$date1 = new DateTime(‘now’);
$date2 = new DateTime(‘tomorrow’);
In some situations, this won’t say «in 1 days», but «in 0 days».
I think this is because «now» is the current time, while «tomorrow» is the current day +1 but at a default time, lets say:
Now: 08:00pm, 01.01.2015
Tomorrow: 00:00am, 02.01.2015
In this case, the difference is not 24 hour, so it will says 0 days.
Better use «today», which should also use a default value like:
Today: 00:00am, 01.01.2015
Tomorrow: 00:00am, 02.01.2015
which now is 24 hour and represents 1 day.
This may sound logical and many will say «of course, this is right», but if you use it in a naiv way (like I did without thinking), you can come to this moment and facepalm yourself.
Conclusion: «Now» is «Today», but in a different clock time, but still the same day!
After wrestling with DateTime::diff for a while it finally dawned on me the problem was both in the formatting of the input string and the formatting of the output.
The task was to calculate the duration between two date/times.
1. Make sure you have a valid date variable. Both of these strings are valid:
$strStart = ‘2013-06-19 18:25’ ;
$strEnd = ’06/19/13 21:47′ ;
?>
2. Next convert the string to a date variable
3. Calculate the difference
4. Format the output
[Modified by moderator for clarify]
Using the identical (===) comparision operator in different but equal objects will return false
If you want to quickly scan through the resulting intervals, you can use the undocumented properties of DateInterval.
The function below returns a single number of years, months, days, hours, minutes or seconds between the current date and the provided date. If the date occurs in the past (is negative/inverted), it suffixes it with ‘ago’.
It seems that while DateTime in general does preserve microseconds, DateTime::diff doesn’t appear to account for it when comparing.
= ‘2014-03-18 10:34:09.939’ ;
$val2 = ‘2014-03-18 10:34:09.940’ ;
To work around this apparent limitation/oversight, you have to additionally compare using DateTime::format.
I needed to get the exact number of days between 2 dates and was relying on the this diff function, but found that I was getting a peculiar result with:
I had to end up using :
Though I found a number of people who ran into the issue of 5.2 and lower not supporting this function, I was unable to find any solid examples to get around it. Therefore I hope this can help some others:
Как получить разницу во времени в минутах в PHP
Как рассчитать разницу между двумя датами в PHP?
ОТВЕТЫ
Ответ 1
Вычитайте прошлое больше всего из будущего самого лучшего и разделите его на 60.
Время выполняется в формате Unix, так что это просто большое число, показывающее количество секунд от January 1, 1970, 00:00:00 GMT
Ответ 2
Ответы выше для старых версий PHP. Используйте класс DateTime для выполнения любых вычислений даты, когда PHP 5.3 является нормой. Например.
Вышеприведенный код выводит:
1837 дней всего
5 лет
0 месяцев
10 дней
6 часов
14 минут
2 секунды
Чтобы получить общее количество минут:
Каково фактическое количество минут, прошедших между двумя датами. Класс DateTime будет учитывать летнее время (в зависимости от часового пояса), где «старый путь» не будет. Прочтите руководство по дате и времени http://www.php.net/manual/en/book.datetime.php
Ответ 3
Ответ 4
Ответ 5
Вы получаете то, что хотите.
Ответ 6
другой способ с часовым поясом.
Ответ 7
Я написал эту функцию для одного моего сайта блога (разница между прошлой датой и датой сервера). Это даст вам результат, подобный этому
«49 секунд назад», «20 минут назад», «21 час назад» и т.д.
Я использовал функцию, которая бы меня разницу между датой и датой сервера.
Сохраните его, как файл, «date.php». Вызовите функцию с другой страницы, как это
Конечно, вы можете изменить функцию для передачи двух значений.
Ответ 8
Я думаю, это поможет вам
Ответ 9
Ответ 10
Более универсальная версия, которая возвращает результат в дни, часы, минуты или секунды, включая дроби/десятичные знаки:
Ответ 11
Вот как я отобразил «xx times ago» в php> 5.2.. здесь больше информации об объекте DateTime
Ответ 12
Мое решение найти разницу между двумя датами здесь. С помощью этой функции вы можете найти различия, такие как секунды, минуты, часы, дни, годы и месяцы.
Вы можете развить эту функцию. Я проверил и работает для меня. Выходные данные объекта DateInterval находятся здесь:
Ответ 13
Ответ 14
Я нашел так много решений, но так и не получил правильного решения. Но я создал код, чтобы найти минуты, пожалуйста, проверьте его.
Это дает вывод в часах и минутах, например, 01 час 02 минут, как 01:02
Время в PHP, смещение от GMT, UTC
Для начала разберемся что такое GMT и UTC. Во многих источниках они упоминаются как синонимы, и между ними действительно не существенная разница (до 1 секунды).
Их отличие в методике получения точного значения. UTC (универсальное координированное время) измеряется благодаря высокоточным атомным часам. GMT (Время гринвичского или нулевого меридиана) получают благодаря астрономическим расчетам. При этом UTC периодически подгоняют, чтобы расхождение с GMT составляло не более секунды.
Для бытовых целей это расхождение не важно и потому UTC и GMT можно использовать как одно и тоже число.
Время, используемое в PHP
Речь идет о функции time(). Она возвращает так называемый UNIX_TIMESTAMP, время в секундах с 1 Января 1970 года.
Какое время возвращает PHP «по умолчанию»? Для какого часового пояса? Установка по умолчанию часового пояса выполняется в файле php.ini. Например, здесь установлен часовой пояс Лос Анджелеса:
Но если настройки не менялись после установки PHP, то обычно вы там обнаружите UTC, что соответствует часовому поясу GMT:
В программе, вы можете установить нужный вам часовой пояс.
Это можно сделать вот так:
Если используется второй способ, то он устанавливает приоритетное значение часового пояса для функций времени в PHP.
Функция time(), показывает время именно для того часового пояса, который установлен в текущий момент в настройках или date_default_timezone_set().
Как узнать разницу времени между локальным часовым поясом и GMT?
Мы разобрались, что time() показывает время для выбранного часового пояса. Разницу времени локального времени (LT) от GMT и текущий код часового пояса можно получить с помощью ключей функции date(). Рассмотрим следующий пример.
Z — разницу в секундах, при этом пояса западнее GMT дают отрицательные значения, а восточнее — положительные;
e — идентификатор часового пояса (появился в PHP 5.1);
P — разница с GMT в часах и минутах (появился в PHP 5.1.3),
T — аббревиатура часового пояса.
Есть и другие ключи, все они перечислены в документации функции date().
Кстати, через 22 года (19 января 2038) для хранения времени в таком формате уже не будет хватать 32 битного целого числа со знаком. Вполне возможно, что 32 битных приложений уже к тому времени не останется, так что проблемы переполнения не возникнет. 64х-битной переменной уже должно хватить на 292 млрд. лет. Можно уже сейчас проектировать базы данных с учетом этого факта.
Данная запись опубликована в 14.01.2016 19:51 и размещена в PHP. Вы можете перейти в конец страницы и оставить ваш комментарий.