[PHP] seštevanje datumov - Ima kdo...

... 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

uporabi timestamp ter prištej sekunde kolikor jih je za to odbobje

time()+(3600247). Torej trenutni čas in dodaš 7 dni.

3600=1 ura * 24ur = 1 dan*7=7 dni

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 :) )

Kaj pa easter_days() ?

Blah ... no še to da vrne število dni po 21. marcu ...

Pa formula za velikonočni ponedeljek je 21.marec + ester_days() + 1 :D

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;
}
}

  1. maj ni praznik.

herbi: hvala!
seweb: bi blo pa fino če bi bil