<?php function _workDays($date1, $date2) { //święta w postaci mm-dd, pominąłem Wielkanoc i Boże Ciało, gdyż są to święta ruchome if ($date2===$date1) return 0; $znak=1;//określa czy to będzie minus (gdy date1>date2) czy plus if ($date1>$date2)// minusy {$datePom=$date1;$date1=$date2;$date2=$datePom;$znak=-1;} $ilosc=0; while ($date1<$date2) { $ilosc++; } $ilosc*=$znak; return $ilosc; } ?>
wywołanie: echo _workDays('2005-04-11','2005-04-20');
Z założenia pierwsza data ma być miejsza od drugiej, w innym przypadku wynik będzie ujemny (mi to rozwiązanie było potrzebne, więc tak jest. Jak ktoś chce zawsze wynik dodatni, to usunąć linijkę $ilość*=$znak i wcześniej wszystko co dotyczyło zmiennej $znak).
Do liczby dni początkowa data nie jest liczona, czyli
echo _workDays('2005-04-18','2005-04-19');
zwróci 1.
Mam nadzieję że komuś się przyda

edit:
Pełna funkcja z uwzględniem świąt ruchomych znajduje się tu:
http://nospor.pl/liczba-dni-roboczych-n23.html