Добрый день! Пишу скрипт для анализа затраченного времени. Возникла проблема с подсчетом времени только в определенные часы. Есть допустим два временных промежутка: 2014-07-19T11:00:26.000+0600 2014-08-18T16:20:58.000+0600 Необходимо посчитать разницу во времени между ними, но, скажем, разницу только времени с 9 до 18, т.е. без учета вечерних и ночных часов. В упор не могу понять, каким образом это можно реализовать. Заранее спасибо за ответы.
есть два времени, например с 1 сентября с 10 часов до 2 сентября 10 часов необходимо, чтобы скрипт посчитал интервал времени между ними, НО беря в расчет только рабочие часы. Т.е. общее время это 24 часа Надо, чтобы получилось 9 (время 1 сент. с 10 до 18 = 8 часов + время 2 сент. с 9 до 10 часов)
Представить сутки массивом из 24 элементов. В каждой ячейке массива инфа, рабочий это час или нет. И пройти последовательно по массиву, прибавляя к общей сумме 3600 сек., если час рабочий, или 0, если не рабочий. Потом секунды перевести в нужное представление (1:20:33). Также нужно учитывать день - рабочий или выходной.
Спасибо за идею, очень полезно! А как вот только быть, если кол-во времени не в одних часах, но еще и минуты? Например с 10 часов 22 минут. Мне для начала надо получить именно затраченное рабочее время в минутах.
бей тогда на интервалы, согласно графику, по границам. Границы складывай, если это рабочий интервал. Интервалы времени в пхп реализованы http://php.ru/manual/class.dateinterval.html
А если так: допустим, надо посчитать время с 1 октября, 15.30, до 28 октября, 12.00. Считаем время с 15.30 до 18.00 октябр Добавляем 8 часов за 2 октября и 8 часов за 3 октября. Добавляем по 40 часов за три следующие недели (до 26 включительно) Добавляем 8 часов за 27 октября. Добавляем время с 9.00 по 12.00 28 октября. Правда, не учтены праздники.
Моя задача осложняется еще и тем, что возможно будет требоваться, в зависимости от определенных дней, изменять рабочие часы. То есть начало и конец рабочего дня могут варьироваться и должны быть переменными, которые пользователь может задавать самостоятельно. Поэтому просто не брать в расчет какую-либо временную константу (8 часов ночью, например) не получится. Анализ будет неточным.
Тогда формируйте массив timestampов и последовательно проходите: первую разность добавляем в сумму, следующую пропускаем, следующую добавляем и т.д.