За последние 24 часа нас посетил 17521 программист и 1650 роботов. Сейчас ищут 916 программистов ...

Подсчет разницы во времени с учетом актуальных часов

Тема в разделе "Прочие вопросы по PHP", создана пользователем romastic, 14 окт 2014.

  1. romastic

    romastic Новичок

    С нами с:
    14 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    Добрый день!
    Пишу скрипт для анализа затраченного времени.
    Возникла проблема с подсчетом времени только в определенные часы.

    Есть допустим два временных промежутка:
    2014-07-19T11:00:26.000+0600
    2014-08-18T16:20:58.000+0600

    Необходимо посчитать разницу во времени между ними, но, скажем, разницу только времени с 9 до 18, т.е. без учета вечерних и ночных часов.

    В упор не могу понять, каким образом это можно реализовать.
    Заранее спасибо за ответы.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    чиво чиво?
     
  3. romastic

    romastic Новичок

    С нами с:
    14 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    есть два времени, например с 1 сентября с 10 часов до 2 сентября 10 часов
    необходимо, чтобы скрипт посчитал интервал времени между ними, НО беря в расчет только рабочие часы.
    Т.е. общее время это 24 часа
    Надо, чтобы получилось 9 (время 1 сент. с 10 до 18 = 8 часов + время 2 сент. с 9 до 10 часов)
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Представить сутки массивом из 24 элементов. В каждой ячейке массива инфа, рабочий это час или нет. И пройти последовательно по массиву, прибавляя к общей сумме 3600 сек., если час рабочий, или 0, если не рабочий. Потом секунды перевести в нужное представление (1:20:33). Также нужно учитывать день - рабочий или выходной.
     
  5. romastic

    romastic Новичок

    С нами с:
    14 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    Спасибо за идею, очень полезно!
    А как вот только быть, если кол-во времени не в одних часах, но еще и минуты?
    Например с 10 часов 22 минут.
    Мне для начала надо получить именно затраченное рабочее время в минутах.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    бей тогда на интервалы, согласно графику, по границам. Границы складывай, если это рабочий интервал. Интервалы времени в пхп реализованы http://php.ru/manual/class.dateinterval.html
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    считай в секундах и приводи в минуты.
     
  8. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    А если так: допустим, надо посчитать время с 1 октября, 15.30, до 28 октября, 12.00.
    Считаем время с 15.30 до 18.00 октябр
    Добавляем 8 часов за 2 октября и 8 часов за 3 октября.
    Добавляем по 40 часов за три следующие недели (до 26 включительно)
    Добавляем 8 часов за 27 октября.
    Добавляем время с 9.00 по 12.00 28 октября.
    Правда, не учтены праздники.
     
  9. romastic

    romastic Новичок

    С нами с:
    14 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    Моя задача осложняется еще и тем, что возможно будет требоваться, в зависимости от определенных дней, изменять рабочие часы. То есть начало и конец рабочего дня могут варьироваться и должны быть переменными, которые пользователь может задавать самостоятельно. Поэтому просто не брать в расчет какую-либо временную константу (8 часов ночью, например) не получится. Анализ будет неточным.
     
  10. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Тогда формируйте массив timestampов и последовательно проходите: первую разность добавляем в сумму, следующую пропускаем, следующую добавляем и т.д.