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> &nbsp;
        <select size=\"1\" name=\"year_now\" 
size=\"1\">".year_dropbox(date("Y",$mktoday))."
        &nbsp;<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]

Reply via email to