If you want to traverse days between 2 dates, just use DateTime and DateInterval classess. $d1 = new DateTime('2016-10-30'); $d1->add(new DateInterval('PD1')); $d1 should point to next day now. On Tue, Oct 25, 2016 at 4:10 PM, Cliff Nieuwenhuis < c.nieuwenhuis@xxxxxxxxxxxxxx> wrote: > This is a stripped-down version of a calendar program. Can anyone explain > why November 6 2016 appears twice? Or 2015-11-01? > > I'm assuming the fault lies with > > $calday = $calday + (60 * 60 * 24); > > ...but I'd like to know why some days apparently have less than 86400 > seconds and how (efficiently) to work around that. > > Here is my code: > > $calday = strtotime('2016-10-30'); > $finish = strtotime('2016-12-01'); > > while ( $calday < $finish ) { > for ($dow = 0; $dow < 7; $dow++) { > > // set the year, month, and day > $year = (int) date('Y', $calday); > $month = (int) date('n', $calday); > $day = (int) date('j', $calday); > > echo "Year: $year, Month: $month, Day: $day, Day > of Week: $dow <br />\n"; > > // move on to the next day > $calday = $calday + (60 * 60 * 24); > } > echo "* * *<br />\n"; > } > > Thanks in advance for any help. > > -- > Clifford R. Nieuwenhuis > IT Manager > Architectural Design Consultants, Inc. > c.nieuwenhuis@xxxxxxxxxxxxxx > 608-254-6181 > > > -- > > Clifford R. Nieuwenhuis > IT Manager > Architectural Design Consultants, Inc. > c.nieuwenhuis@xxxxxxxxxxxxxx > 608-254-6181 > > Visit our redesigned website: > www.adcidesign.com > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Shiplu.Mokadd.im Unix Hacker *Innovation distinguishes between follower and leader * — Steve Jobs *An expert is a person who has made all the mistakes that can be made in a very narrow field.*— Neils Bohr