Autor Zpráva
Musilda
Profil
Zdravím

potřeboval bych pomoci s výpočtem data doručení.
Počítám aktuální datum, plus definované dny.

$deadline = date('Y-m-d', strtotime($delivery_date. ' + '.$days.' days'));

Potřeboval bych ale nějak zjistit, zda vypočtené datum vyjde na víkend a přičíst o jeden, či dva dny více.
Datum doručení nesmí vyjít na víkend.

Díky za pomoc
Keeehi
Profil
$weekend = date('N', strtotime($delivery_date. ' + '.$days.' days')) > 5;
Ve $weekend je true/false podle toho zde jde o víkend nebo ne.

Pokud to má pak posouvat na podndělí, tak se to dá zapsat
$dayOfWeek =  date('N', strtotime($delivery_date. ' + '.$days.' days'));
$extraDays = $dayOfWeek > 5 ? 8 - $dayOfWeek : 0;
$deadline = date('Y-m-d', strtotime($delivery_date. ' + '.($days + $extraDays).' days'));
blitzik
Profil *
Pokud chceš mít v deadline rovnou požadované datum, tak stačí mírná úprava:

$deadline = date('Y-m-d', strtotime($delivery_date. ' + '.$days.' days next weekday'));
Alphard
Profil
A opravdu stačí zohledňovat sobotu a neděli? Co ostatní svátky?
Jestli se mají zohlednit svátky, je nejrozumnější napsat funkcí isWorkingDay($date) a pak iterovat potřebný počet pracovních dnů. Tohle kouzlení se strtotime je slepá ulička.
Musilda
Profil
Alphard:
Předpokládám že data svátků se musí doplnit ručně. Protože Slovensko o Česko to mají rozdílné.
Alphard
Profil
Zadat jejich seznam samozřejmě ano, ale počítat se snad již budou automaticky. Stejně tak datum Velikonoc se přece vypočítá a nebude se ručně aktualizovat každý rok.
Musilda
Profil
Ok, díky všem, vyřešeno.
Použil jsem kombinaci doplnění svátků, s nahrazením "days" za "weekday".

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: