[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Расчет рабочего времени.
maclaud
Доброго врмени суток.

Есть необходимость в модуле(скрипте)

Который должен расчитывать количество рабочих дней с начальной даты по окончательную.

не учитывая праздничные дни и выходные.

Как сделать такое?




Спустя 1 час, 40 минут, 39 секунд (30.11.2011 - 11:55) TranceIT написал(а):
Примерно так:

1) Все праздники в массив.
2) Выходные вычисляем date()
3) Вычисляем разницу между конечной и начальной датой в днях.
4) Вычитаем из результата количество совпадений.

Спустя 11 минут, 1 секунда (30.11.2011 - 12:06) Renden написал(а):
maclaud
Делать особо нех было написал.. держи:

function work_days($date_begin, $date_end) {
$holidays = array('01.01','02.01','23.02','01.05','02.05','09.05'); //Добавь даты всех праздников.. лень было))
$date_begin = strtotime($date_begin);
$date_end = strtotime($date_end);
$days = floor(($date_end - $date_begin)/(60*60*24));
for($i=1;$i<=$days;$i++)
{
$day = (24*3600) * $i;
$array[] = date('d.m.Y', $date_begin + $day);
}
foreach($array AS $key=>$val)
{
list($d,$m,$y) = explode('.', $val);
if(in_array($d.'.'.$m, $holidays))
unset($array[$key]);
if(date('w',strtotime($val)) == '0' || date('w',strtotime($val)) == '6')
unset($array[$key]);
}
return count($array);
}

echo work_days('02.02.2011', '10.03.2011');

ЗЫ вроде должно правильно работать.
ЗЫ2 может быть можно было проще сделать, но лень думать)

Спустя 2 дня, 4 часа, 53 минуты, 11 секунд (2.12.2011 - 16:59) maclaud написал(а):
спасибо огромное. проверю.

а еще как сделать чтобы к существующей дате можно добавить было количество рабочих дней и результат был дата+колво рабочих дней.

например указываю 2.12.11+10 раб дней и получается 15.12.11?

примернотак

Спустя 2 дня, 15 часов, 29 минут, 34 секунды (5.12.2011 - 08:29) maclaud написал(а):
up
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.