Am avut putin de furca cu un bug dubios in timp ce lucram la un site si am zis ca sa pun aici bugul pentru ca sunt curios cata lume s-ar prinde care e problema (si cat de repede

). Eu am pierdut cam o ora din cauza asta.
Consideram functia strtotime din php (functie care pentru o anumita data returneaza numarul de secunde trecute de la 1 Jan 1970).
Avem o perioada data prin data de inceput si data de sfarsit. De ex: 01-05-2009, 05-05-2009.
Vrem sa calculam numarul de zile din aceasta perioada si avem urmatorul cod.
//in PHP variabilele incep cu semnul $.
//$start -> o variabila in care avem data de inceput a perioadei
//$end -> data de sfarsit
$cnt = (strtotime($end) - strtotime($start)) / 86400;
Logica din spatele codului e destul de simpla. Vedem cate secunde au trecut de la $start pana la $end si impartim la 86400 (numarul de secunde al unei zile, 24 * 3600).
Problema ar fi ca pentru perioada 01-10-2009, 01-11-2009 acea expresie ne va da o valoare reala (impartirea nu va fi exacta). De ce?
PS: Puteti considera ca pentru o data de genul dd-mm-yyyy, strtotime returneaza numarul de secunde trecute pana la dd-mm-yyyy 00:00.
PPS: Prima persoane care raspunde corect are un + la karma de la mine

.