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]   

> Описание: Не совсем корректно работает
Mans
Отправлено: 13 Июня, 2013 - 08:11:30
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Июнь 2013  


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




PHP:
скопировать код в буфер обмена
  1.  
  2. for ($i=0; $i<count($arrn1); $i++){
  3.         for ($j=$i; $j<count($arrn1); $j++) {
  4.                 if ($user[$i] == $user[$j] and $type[$i] == "IN:" and $type[$j] == "OUT:" and $checked[$i] == FALSE and $checked[$j] == FALSE){
  5.                 $arr777 = explode(":",$time[$j]);
  6.                 $arr888 = explode(":",$time[$i]);
  7.             echo '('. $time[$i] . ' ' . $time[$j].')';
  8.                 $arr777[0] = ((int)($arr777[0])) * 3600;
  9.                 $arr777[1] = ((int)$arr777[1]) * 60;
  10.                 $arr777[2] = ((int)($arr777[2]));
  11.                 $arr777[3] = $arr777[0] + $arr777[1] +$arr777[2];
  12.        
  13.                 $arr888[0] = ((int)($arr888[0])) * 3600;
  14.                 $arr888[1] = ((int)$arr888[1]) * 60;
  15.                 $arr888[2] = ((int)$arr888[2]);
  16.                 $arr888[3] = $arr888[0] + $arr888[1] +$arr888[2];
  17.                 $res7 = $arr777[3] - $arr888[3];
  18.        
  19.                 $resf[0] = (int)($res7/(3600));
  20.                 $res7 = (int) ($res7%(3600));
  21.                 $resf[1] = (int)($res7/60);
  22.                 $res7 = (int)($res7%60);
  23.                 $resf[2] = (int) ($res7);
  24.                 $str88 = implode(":",$resf);
  25.                 $newar [$j] = $str88;
  26.                 $checked[$i] = TRUE;
  27.                 $checked[$j] = TRUE;
  28.                 break;
  29.                 }
  30.                
  31.         }
  32. }
  33.  


Под IN имеется ввиду что пользователь вошел на сервер, разумеется OUT: означает что вышел, получается я считываю время IN и OUT как строки, делю по знаку ":", перевожу в секунды, и нахожу разность, дальше перевожу обратно в формат ЧЧ:ММ:СС. Все работает, проблема в том что не могу сообразить алгоритм в случае когда юзер заходит например в 22:01:23 а выходит в 8:50:33 утра. Какие идеи?
 
 Top
DelphinPRO
Отправлено: 13 Июня, 2013 - 08:35:02
Post Id



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


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


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




например хранить полную дату "d-m-Y H:s:i"
тогда можно будет перевести в unixtimestamp и определить разницу простым вычитанием.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Мелкий Супермодератор
Отправлено: 13 Июня, 2013 - 09:19:37
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Перенесено из темы "Алгоритм разности времени"
http://php.net/manual/en/datetime.diff.php
Честно - никакого желания вычитывать ваши бессмысленные имена переменных и какие-то числовые манипуляции.


-----
PostgreSQL DBA
 
 Top
Mans
Отправлено: 13 Июня, 2013 - 12:17:56
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Июнь 2013  


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




Мелкий пишет:
http://php.net/manual/en/datetime.diff.php
Честно - никакого желания вычитывать ваши бессмысленные имена переменных и какие-то числовые манипуляции.

ахахахаххааха, спасибо!
 
 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