For what it's worth, to modify the code you originally posted, don't calculate: Replace: $calday = $calday + (60 * 60 * 24); With: $calday = strtotime('+1 day', $calday); On Tue, Oct 25, 2016 at 9:10 AM, 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 > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php