hello!
This is Pradeep Kumar from India. I felt the PHP manual provided by you,
highly helpful for development. Being a regular user of manual I feel it my duty
to inform you about any bug I encounter in the manual.
In date() function reference page the first function under the heading
User contributed notes: the first function datecalc($rdate, $j=7) returns date
with subtracted $j days from $rdate gives wrong output for any $j one less then
day of the date $rdate (eg. dateecalc('17-04-2004',16 )) or any no of days more than this.
This is because of a wrong condition check in the code.
The right code with enhanced leap year check is :
//==================================== function datecalc ($rdate, $j=7) { $rdate = explode("-",$rdate); $y = $rdate[0]; $m = $rdate[1]; $d = $rdate[2]; // CHECK LEAP YEAR if($y%4==0 && ($y%100!=0 || $y%400==0)) { $leap='Y'; } // MONTH SWITCH: Determines days in previous month $dm switch ($m) { case 2: $dm = '31'; break; case 3: if($leap == 'Y') { $dm = '29'; break; } else { $dm = '28'; break; } case 4: $dm = '31'; break; case 5: $dm = '30'; break; case 6: $dm = '31'; break; case 7: $dm = '30'; break; case 8: $dm = '31'; break; case 9: $dm = '31'; break; case 10: $dm = '30'; break; case 11: $dm = '31'; break; case 12: $dm = '30'; break; case 1: $dm = '31'; break; } // END SWITCH // SUBTRACT DAYS AND ROLL BACK MONTHS $rd = $d; $rm = $m; $ry = $y; $rj = $j; while($rj >= 1) { if($rd == '1') //Check for first day of month { $rm = $rm - 1; //Back one month $rd = $dm; //Set day equal to days of previous month } else $rd = $rd - 1; //Subtract 1 day if($rm < 1) //Sets up previous year { $ry = $ry - 1; //Subtracts year $rm = '12'; //We know this must be December $rd = '31'; //December has 31 days } $rj = $rj - 1; //Subtract 1 iteration } // CREATE THE NEW DATE $rdate $rdate = $ry; $rdate .= '-'; $rdate .= $rm; $rdate .= '-'; $rdate .= $rd; return $rdate; } // END datecalc()
//====================================
Hope this right code could be helpful for some other programmers like me.
_________________________________________________________________
Join BharatMatrimony.com. http://www.bharatmatrimony.com/cgi-bin/bmclicks1.cgi?72 Unmarried? Join Free.