adam882
5.08.2012, 14:07:33
Witam
Chcę napisać skrypt, który będzie generował przedziały tygodnia począwszy od określonego dnia (od poniedziałku do piątku). Przykładowo:
6.08.2012 - 12.08.2012
13.08.2012 - 19.08.2012
20.08.2012 - 26.08.2012
27.08.2012 - 2.08.2012
itp.
Problemem jest tutaj długość dni w miesiącu, które czasem się zmieniają. Czy mógłby mi ktoś w tym pomóc?
klocu
5.08.2012, 14:18:57
Na początku sprawdzasz czy pierwsza data jest mniejsza od drugiej - warto pilnować co się przekazuje do funkcji.
A dalej jak po sznurku:
- rozpoznajesz którym dniem tygodnia jest pierwszy podany dzień
- dodajesz tyle żeby dobić do ostatniego dnia tygodnia
- potem można to opakować w pętlę która doda 1 dzień (poniedziałek) do obecnego, doda kolejne dni by otrzymać niedzielę, no chyba że po drodze dobije do dnia granicznego
W najprostszej formie możesz to oprzeć na date i strtotime('+1 day').
W innej wersji możesz połączyć strtotime, dodawać każdorazowo 1 dzień i badać na podstawie date czy kolejne dni znajdują się w tym samym tygodniu.
Rozwiązań jest wiele.
(strtotime sam przeskoczy ci na kolejny miesiąc jeśli przelecisz ostatni dzień z badanego miesiąca)