ID: 14635 Updated by: jimw Reported By: [EMAIL PROTECTED] Old Status: Open Status: Bogus Bug Type: Date/time related Operating System: Windows 2000 Professional PHP Version: 4.0.6 New Comment:
october 28 was 25 hours long. daylight savings time. Previous Comments: ------------------------------------------------------------------------ [2001-12-20 20:36:49] [EMAIL PROTECTED] When iterating from a start mktime to another using the date() function the First Day of the Last Week in October messes up. The same problem appears when using Apache or IIS. Just cut and paste below to see what I mean. <?php $today = getdate(mktime (0,11,0,10,1,2001)); print "Notice Problem with October<br>".full_calendar_month ($today,$PHP_SELF, null); $today = getdate(); print "Notice No Problem<br>".full_calendar_month ($today,$PHP_SELF, null); /* DISPLAY A FULL MONTH CALENDAR */ function full_calendar_month ($today,$url, $arrevent) { GLOBAL $cbouser; $user = null; if ($cbouser) { $user = "&cbouser=$cbouser";}//display the userid if (!$today) {$today = getdate();} //NEED TO CONVERT $today to midnight! $today = getdate(mktime(0,0,0,$today["mon"],$today["mday"],$today["year"])); $mktoday = mktime (0,0,0,$today["mon"],1,$today["year"]); $mkday = 86400; //1 day in mktime 24 hr * 60 min * 60 sec. $fday = date("w",$mktoday); //first day of the month w - day of the week, numeric, i.e. "0" (Sunday) to "6" (Saturday) $mth_num = date("n",$mktoday); //the month number ie. Nov 11 $cell_bgcolor = "#C0C0C0"; /* DETERMINE THE FIRST DAY OF THE MONTH */ if ($fday == 0) { //SUNDAY NEED TO GET TO MONDAY $mkstart = $mktoday - $mkday * 6; } elseif ($fday != 1) {//need to make the last part of last week. $mkstart = $mktoday - $mkday * ($fday-1); } else { //THE MONTH STARTS WITH MONDAY $mkstart = $mktoday; } //FIND THE LAST DAY OF THE MONTH $mkend = $mktoday + $mkday * (date("t",$mktoday)-1); //t - number of days in the given month; i.e. "28" to "31" if (date("w",$mkend) != 0) {$mkend = $mkend + $mkday * (7-date("w",$mkend));} #echo date("w D M j Y ",$mkend)."<br>"; //BEGIN THE OUTPUT /* FOR DROP BOX <select size=\"1\" name=\"month_now\" size=\"1\">".month_dropbox($mth_num)."</select> <select size=\"1\" name=\"year_now\" size=\"1\">".year_dropbox(date("Y",$mktoday))." <input type=\"submit\" name=\"submit\" value=\"Go\"> */ $table = "<table border=\"1\" width=\"100%\"> <tr><th><input type=\"submit\" name=\"submit\" value=\"<<\"></th> <th colspan=\"4\" align=\"center\">".date("F Y",$mktoday)." </th><th><input type=\"submit\" name=\"submit\" value=\">>\"></th></tr> <tr><th>Monday</th><th>Tuesday</th><th>Wednesday</th><th>Thursday</th><th>Friday</th><th>Sat/Sun</th></tr>"; //SHADE THE DAYS THAT ARE NOT IN THE MONTH if ($today[0] == $mkstart) { $bgcolor = "bgcolor=\"#FFFF00\" bordercolor=\"#FF0000\""; } elseif ($mth_num != date("n",$mkstart)) { $bgcolor = "bgcolor=\"$cell_bgcolor\""; } else { $bgcolor = ""; } $event_date = "<a href=\"$url?event_date=".date("Y-m-d",$mkstart)."&rdocalendar_view=30$user\">".date("F j",$mkstart)."</a>"; //THE FIRST DAY $table .= "<tr><td align=\"right\" valign=\"top\" $bgcolor>$event_date</td>"; for ($i=$mkstart+$mkday;$i<$mkend;$i+=$mkday) { $event_date = "event_date=".date("Y-m-d",$i)."&rdocalendar_view=30$user"; //background color if ($today[0] == $i) { $bgcolor = "bgcolor=\"#FFFF00\" bordercolor=\"#FF0000\" border=1"; } elseif ($mth_num != date("n",$i)) { $bgcolor = "bgcolor=\"$cell_bgcolor\" border=0"; } else { $bgcolor = ""; } //date display if (date("j",$i) == 1) { $the_day = date("F j",$i); } else { $the_day = date("j",$i);} switch (date("w",$i)) { // day of the week, numeric, i.e. "0" (Sunday) to "6" (Saturday) case 1: #monday $table .= "<tr><td align=\"right\" valign=\"top\" $bgcolor><a href=\"$url?$event_date\">$the_day</a></td>"; break; case 6: #saturday - sunday $table .= "<td> <table width=100% $bgcolor> <tr><td align=\"right\" valign=\"top\"><a href=\"$url?$event_date\">$the_day</a></td></tr> </table>"; $i+=$mkday; //background color if ($today[0] == $i) { $bgcolor = "bgcolor=\"#FFFF00\" bordercolor=\"#FF0000\" border=1"; } elseif ($mth_num != date("n",$i)) { $bgcolor = "bgcolor=\"$cell_bgcolor\" border=0"; } else { $bgcolor = ""; } $event_date = "event_date=".date("Y-m-d",$i)."&rdocalendar_view=30$user"; //date display if (date("j",$i) == 1) { $the_day = date("F j",$i); } else { $the_day = date("j",$i);} #SUNDAY $table .= "<table width=100% $bgcolor> <tr> <td align=\"right\" valign=\"top\"> <hr><a href=\"$url?$event_date\">$the_day</a></td></tr></table></td></tr>"; break; default: #tuesday - friday $table .= "<td align=\"right\" valign=\"top\" $bgcolor><a href=\"$url?$event_date\">$the_day</a></td>"; break; } } $table .= "</table>"; return $table; } ?> ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=14635&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]