Форумы портала PHP.SU » » Вопросы новичков » Сравнение двух величин времени в заданном формате

Страниц (1): [1]
 

1. Athreem - 10 Октября, 2017 - 16:47:57 - перейти к сообщению
Мне приходит от сайт ответ в котором содержится время в таком формате
2017-10-10T13:34:41.979108Z
Как посредством php проверить прошло 20 или больше минут от времени присланного в ответе?
2. LIME - 10 Октября, 2017 - 16:59:20 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $datetime1 = new DateTime();
  2. $datetime2 = new DateTime('2017-10-10T13:34:41.979108Z');
  3. $interval = $datetime1->diff($datetime2);
  4. echo $interval->format('%i');


http://php.net/manual/ru/dateinterval.format.php
слегка поправил формат
читайте мануал
гуглите
все есть в общем доступе
(Добавление)
http://php.net/manual/ru/datetime.construct.php
3. Athreem - 10 Октября, 2017 - 17:21:12 - перейти к сообщению
LIME пишет:
PHP:
скопировать код в буфер обмена
  1. $datetime1 = new DateTime();
  2. $datetime2 = new DateTime('2017-10-10T13:34:41.979108Z');
  3. $interval = $datetime1->diff($datetime2);
  4. echo $interval->format('%i');


http://php.net/manual/ru/dateinterval.format.php
слегка поправил формат
читайте мануал
гуглите
все есть в общем доступе
(Добавление)
http://php.net/manual/ru/datetime.construct.php

Спасибо, я так понимаю так независимо от дня и часа сравниваются только минуты, то когда начинается "новый" час "всё" сбивается. Например разница 5 минут, через эти 5 минут будет писать разница 0 минут, а через 6 будет 59, а можно как то выводить "полную" разницу в минутах (пример: 120 минут)
4. LIME - 10 Октября, 2017 - 17:23:47 - перейти к сообщению
все учитывается в моем примере
число минут по календарю учитывая перход суток месяцев годов и високосного года
чистые минуты
пробуй...че спрашивать? экспериментируй
(Добавление)
LIME пишет:
в моем примере
пример из мануала
только формат вывода поменял на минуты
гугли Datetime
diff возвращает объект
как его представить зависит от формата interval->format
хошь в минутах хошь в днях
5. Athreem - 10 Октября, 2017 - 17:28:58 - перейти к сообщению
LIME пишет:
все учитывается в моем примере
число минут по календарю учитывая перход суток месяцев годов и високосного года
чистые минуты
пробуй...че спрашивать? экспериментируй

Ну к твоему примеру на данный момент 17:25 выдаёт ответ 9, считает без учета часов, а только минуты. Мне нужно чтобы выдавало 13:34 - 17:25, здесь разница в 4 часа - 9 минут, то есть 231 минута
6. LIME - 10 Октября, 2017 - 17:32:17 - перейти к сообщению
Athreem точно
мой косяк
привык к сахару фреймворка
щас гляну есть ли готовое решение или через манипуляции придется решать
сорь) ща решим)
(Добавление)
ой да что тут решать
по старинке
PHP:
скопировать код в буфер обмена
  1. $m = floor((time() - strtotime('2017-10-10T13:34:41.979108Z')) / 60);

годится?
(Добавление)
только надо проверку на отрицательное число
но это уже тебе на усмотрение
7. Athreem - 10 Октября, 2017 - 18:47:08 - перейти к сообщению
LIME пишет:
Athreem точно
мой косяк
привык к сахару фреймворка
щас гляну есть ли готовое решение или через манипуляции придется решать
сорь) ща решим)
(Добавление)
ой да что тут решать
по старинке
PHP:
скопировать код в буфер обмена
  1. $m = floor((time() - strtotime('2017-10-10T13:34:41.979108Z')) / 60);

годится?
(Добавление)
только надо проверку на отрицательное число
но это уже тебе на усмотрение

Тут по видимому нужно делить не на 60, echo $m выдаёт -3068, но при делении на 60 это далеко не нужный результат в минутах. Насколько я понял это -3068 секунд разницы во времени, и время идёт на увлечение, если обновить страницу значение будет -3050 например (ближе к нулю), я думаю что здесь разница одного часа показывается? (3600 секунд)

Получается тоже самое что и в первом примере.
8. LIME - 10 Октября, 2017 - 19:13:37 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $t1 = explode('.', '2017-10-10T13:34:41.979108Z')[0];
  2. $m = floor((time() - strtotime($t1)) / 60);
9. Athreem - 10 Октября, 2017 - 19:42:42 - перейти к сообщению
LIME пишет:
PHP:
скопировать код в буфер обмена
  1. $t1 = explode('.', '2017-10-10T13:34:41.979108Z')[0];
  2. $m = floor((time() - strtotime($t1)) / 60);


time() работает с часовыми поясами? вроде всё верно, но разница меньше на два часа чем должна быть.

Всё разобрался до конца, по факту мне и ненужен был time(), так я сравниваю два разных значения времени, но в одном и том же формате.
10. LIME - 11 Октября, 2017 - 14:46:56 - перейти к сообщению
Athreem пишет:
time() работает с часовыми поясами?
нет конечечно
UTC
разабрался и молодец
так держать))

 

Powered by ExBB FM 1.0 RC1