Разница между 2мя датами в часах без учета выходных и праздников |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 7050-й день
![]() |
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Разница между 2мя датами в часах без учета выходных и праздников |
RipperR |
![]()
Пост
#1
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 153 С нами с: 25-March 08 ![]() |
Кто-то реализовывал на php данную задачу: "Разница между 2мя датами в часах без учета выходных и праздников"
Есть таблица государственных праздников в идеале ее парсить откуда-то, но пока введена вручную. Имеем дата время начала задачи и имеем дату время конца задачи надо вычислить кол-во часов с момента начала задачи исключая отсюда нерабочие дни к примеру праздники и выходные ... а также учитывать рабочий день с 9-00 до 20-00 ... то-есть надо учитывать сколько рабочего времени потратил человек на выполнение задачи. Пока не сильно вкуриваю как это сделать ... Сообщение отредактировал RipperR - Jul 24 2017, 22:31 |
![]() ![]() |
Durex |
Пост
#2
|
Репутация: ![]() ![]() Активист ![]() Группа: Пользователи Сообщений: 291 С нами с: 14-June 06 ![]() |
<?php date_default_timezone_set('UTC+2'); $date = '2009-12-06'; $end_date = '2020-12-31'; $workdays = array(); $a = 1; while (strtotime($date) <= strtotime($end_date)) { $workdays[$a] = $date; $date = date ("Y-m-d", strtotime("+1 day", strtotime($date))); $a++; } echo count($workdays).'<br>'; while(($key = array_search('2019-05-13',$workdays)) !== false) { unset($workdays[$key]); } echo count($workdays).'<br>'; $total = count($workdays)*12; echo "<p>Worked $total hours</p>"; //print_r($workdays); ?> Что-то типа такого. Выходные из таблицы в массив и перебором убрать из массива дней Сообщение отредактировал Durex - Jul 25 2017, 8:25 |
RipperR |
Пост
#3
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 153 С нами с: 25-March 08 ![]() |
<?php date_default_timezone_set('UTC+2'); $date = '2009-12-06'; $end_date = '2020-12-31'; $workdays = array(); $a = 1; while (strtotime($date) <= strtotime($end_date)) { $workdays[$a] = $date; $date = date ("Y-m-d", strtotime("+1 day", strtotime($date))); $a++; } echo count($workdays).'<br>'; while(($key = array_search('2019-05-13',$workdays)) !== false) { unset($workdays[$key]); } echo count($workdays).'<br>'; $total = count($workdays)*12; echo "<p>Worked $total hours</p>"; //print_r($workdays); ?> Что-то типа такого. Выходные из таблицы в массив и перебором убрать из массива дней да но тут в тупую берется count($workdays)*12; А у меня задача началась в 19:00 первого дня закончилась к примеру 12:00 5 дня ... то-есть походу надо тупо лепить свой цикл и обходить тупо им календарь сверяя день недели рабочий ли день итп умножать на типовой рабочий день с коректировкой на первый и последний день ... Сообщение отредактировал RipperR - Jul 26 2017, 11:20 |
![]() ![]() |
![]() |
Упрощённая версия | Сейчас: 4th July 2025 - 13:23 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |