All,  

The code below increments day-of-week and date in a loop.  It works 
fine until 2007-11-04 is reached.  Then, it gets 'stuck', no longer 
incrementing the date.

2007-11-04 is the only date I have found that causes this.

Any help would be greatly appreciated.

Thanks in advance,
Andy

-------------------------------
Dates.php
-------------------------------

<?php

// ----------------------------------
// This code works until the date hits 2007-11-04, it 
// never gets past 11/4.  Run it starting with the 
// different dates below.  What gives?
// ------------------------------------

$date[0] = "2007-11-01";
//$date[0] = "2007-11-05";
//$date[0] = "2007-12-31";

$day[0] = DayOfWeek($date[0]);

for ($intX=1;$intX < 7;$intX++) {
        $date[$intX] = DateAdd('d', $date[$intX - 1], 1);
    $day[$intX] = DayOfWeek($date[$intX]);
}

for ($intX=0;$intX < 7;$intX++) {
        echo $day[$intX].' '.$date[$intX].'<br />';
}

// ------------------------------------------------------
function DayOfWeek($strDate) {
        $timestamp = mktime(0,0,0,substr($strDate,5,2),substr
($strDate,8,2),substr($strDate,0,4));
        $Dateinfo = getdate($timestamp);
        switch ($Dateinfo['wday']) {
                case 0:
                        $ret = "Sunday";
                        break;
                case 1:
                        $ret = "Monday";
                        break;
                case 2:
                        $ret = "Tuesday";
                        break;
                case 3:
                        $ret = "Wednesday";
                        break;
                case 4:
                        $ret = "Thursday";
                        break;
                case 5:
                        $ret = "Friday";
                        break;
                case 6:
                        $ret = "Saturday";
                        break;
        }
        return $ret;
}

// ------------------------------------------------------
function DateAdd($interval, $strDate, $intNum) {
        // $strDate is in 'YYYY-MM-DD' format.  
        // Convert to timestamp,
        // calculate new timestamp, 
        // convert back to "YYYY-MM-DD"
        
        $date1 = mktime(0,0,0,substr($strDate,5,2),substr
($strDate,8,2),substr($strDate,0,4));
        
        switch ($interval) {
                case 'w':
                        $date1 = $date1 + ($intNum * 604800);
                        break;
                case 'd':
                        $date1 = $date1 + ($intNum * 86400);
                        break;
                case 'h':
                        $date1 =$date1 + ($intNum * 3600);
                        break;
                case 'n':
                        $date1 = $date1 + ($intNum * 60);
                        break;
                case 's':
                        $date1 = $intNum;
                        break;
        }
        $ret = date("Y-m-d",$date1);
        return $ret;

}
?>


Reply via email to