Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сравнение двух величин времени в заданном формате

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Athreem
Отправлено: 10 Октября, 2017 - 16:47:57
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2017  


Помог: 0 раз(а)




Мне приходит от сайт ответ в котором содержится время в таком формате
2017-10-10T13:34:41.979108Z
Как посредством php проверить прошло 20 или больше минут от времени присланного в ответе?
 
 Top
LIME
Отправлено: 10 Октября, 2017 - 16:59:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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

(Отредактировано автором: 10 Октября, 2017 - 17:01:40)

 
 Top
Athreem
Отправлено: 10 Октября, 2017 - 17:21:12
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2017  


Помог: 0 раз(а)




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 минут)
 
 Top
LIME
Отправлено: 10 Октября, 2017 - 17:23:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




все учитывается в моем примере
число минут по календарю учитывая перход суток месяцев годов и високосного года
чистые минуты
пробуй...че спрашивать? экспериментируй
(Добавление)
LIME пишет:
в моем примере
пример из мануала
только формат вывода поменял на минуты
гугли Datetime
diff возвращает объект
как его представить зависит от формата interval->format
хошь в минутах хошь в днях
 
 Top
Athreem
Отправлено: 10 Октября, 2017 - 17:28:58
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2017  


Помог: 0 раз(а)




LIME пишет:
все учитывается в моем примере
число минут по календарю учитывая перход суток месяцев годов и високосного года
чистые минуты
пробуй...че спрашивать? экспериментируй

Ну к твоему примеру на данный момент 17:25 выдаёт ответ 9, считает без учета часов, а только минуты. Мне нужно чтобы выдавало 13:34 - 17:25, здесь разница в 4 часа - 9 минут, то есть 231 минута
 
 Top
LIME
Отправлено: 10 Октября, 2017 - 17:32:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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

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

(Отредактировано автором: 10 Октября, 2017 - 17:39:54)

 
 Top
Athreem
Отправлено: 10 Октября, 2017 - 18:47:08
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2017  


Помог: 0 раз(а)




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

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

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

Получается тоже самое что и в первом примере.

(Отредактировано автором: 10 Октября, 2017 - 18:49:20)

 
 Top
LIME
Отправлено: 10 Октября, 2017 - 19:13:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. $t1 = explode('.', '2017-10-10T13:34:41.979108Z')[0];
  2. $m = floor((time() - strtotime($t1)) / 60);

(Отредактировано автором: 10 Октября, 2017 - 19:21:20)

 
 Top
Athreem
Отправлено: 10 Октября, 2017 - 19:42:42
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2017  


Помог: 0 раз(а)




LIME пишет:
PHP:
скопировать код в буфер обмена
  1. $t1 = explode('.', '2017-10-10T13:34:41.979108Z')[0];
  2. $m = floor((time() - strtotime($t1)) / 60);


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

Всё разобрался до конца, по факту мне и ненужен был time(), так я сравниваю два разных значения времени, но в одном и том же формате.

(Отредактировано автором: 10 Октября, 2017 - 19:58:22)

 
 Top
LIME
Отправлено: 11 Октября, 2017 - 14:46:56
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Athreem пишет:
time() работает с часовыми поясами?
нет конечечно
UTC
разабрался и молодец
так держать))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB