[PHP] seštevanje datumov - Ima kdo...
7 naročnikov
7 naročnikov
... kako funkcijo, ki prišteje datumu število delovnih dni in vrne nov datum?
Pri seštevanju naj nebi upoštevalo praznikov in vikendov(sobota+nedelja)
Z vikendi nebo problema, praznike bi vsako leto vpisal ročno.
Sigurno je kdo že delal kaj podobnega in lepo prosim za pomoč :)
hvala
13 odgovorov
Vsakoletno vpisovanje praznikov ti odsvetujem, raje napisi funkcijo, ker prej ali slej pozabis, zajebes, .... Vsi prazniki v Sloveniji so fiksni, razen Velikonocnega ponedeljka, ki ga bos moral izracunat.
roky, spyderw: mogoče sem bil premalo natančen,
določenemu datumu bi rad prištel število DELOVNIH dni brez SOBOT, NEDELJ in PRAZNIKOV.
seweb: se strinjam! Po kakšni formuli se pa izračuna velikonočni ponedeljek?
Sigurno ima kdo že kakšno "praznik detektor" funkcijo narejeno, ki bi mi olajšala življene :)
Tole bo tezka za velikonocni ponedeljek -jasno je, da je en dan za veliko nocjo, to je izi :P
Velika noc pa je na prvo nedeljo po prvi pomladni polni luni ... s tem da zadnja odlocitev ni v rokah astronomov, ampak cerkve (zadnjih 40 let ni bilo odstopanja, ni pa nujno, da ga ne bo v prihodnje :) )
vsi slovenski prazniki:
function velika_noc($leto){
$N1 = floor($leto/100);
$N2 = floor($leto%19);
$N3 = floor(($N1 - 17)/25);
$N4 = floor($N1 - floor($N1/4) - floor(($N1 - $N3)/3)+19 * $N2 + 15);
$N4 = floor($N4 - 30 * floor($N4/30));
$N4 = floor($N4 - floor($N4/28) * (1 - floor($N4/28) * floor(29/($N4 + 1)) * floor((21 - $N2)/11)));
$N5 = floor($leto + floor($leto/4) + $N4 + 2 - $N1 + floor($N1/4));
$N5 = floor($N5%7);
$N6 = floor($N4 - $N5);
$NM = floor(3 + floor(($N6 + 40)/44));
$ND = floor($N6 + 28 - 31 * $NM/4);
return $NM." ".($ND+1);
}
function prazniki($mesec,$dan){
switch ($mesec." ".$dan." "){
case "1.1" :
case "1.2" :
case "2.8" :
case "4.27" :
case "5.1" :
case "5.2" :
case "5.31" :
case "6.25" :
case "8.15" :
case "10.31" :
case "11.1" :
case "12.25" :
case "12.26" :
return 1;
break;
default:
return 0;
}
}