WOW! Blindingly simple mistake --> couldn't see the forest before the
trees (or something like that). THANKS for the helping hand! 

Gnik
--- Eugene Lee <[EMAIL PROTECTED]> wrote:
> On Fri, Nov 14, 2003 at 08:53:41PM -0800, Gnik wrote:
> : 
> : One of my servers required a PHP upgrade. Afterwards one of the PHP
> : projects stopped functioning. When it would run one section would
> : scroll endlessly. I can't figure out if it's a 'bug' or if it's bad
> : logic in the coding. 
> 
> Bad logic.  But it took me a while to figure it out.  I'm glad I did;
> I know it will save me countless headaches in the future!  :-)
> 
> : I isolated the problem to be in the 'strtotime' function. Here is a
> : test I ran - when it runs, after getting to 2003-10-26, it scrolls
> : incessently: 
> : 
> : ----BEGIN CODE------
> : <?php
> : echo "<html><head><title>Testing strtotime </title></head>";
> : print " <BR>" ;
> : $stop= "2003-12-27" ;
> : $start= "2003-01-01" ;
> : While ($start <> $stop) {
> :     echo "<BR> Date: " . $start ;
> :     $start = date('Y-m-d', strtotime($start) + 86400);
> : }
> : ?>
> : ----END CODE------
> 
> It's a logic bug due to the wonderful world of Daylight Saving Time.
> When the clock strikes 2003-10-26, adding 86400 seconds to calculate the
> next day's timestamp is normally correct.  However, that date is also
> the last Sunday of Octobor when the U.S. officially reverts from
> Daylight Saving Time back to normal time.  Your next day's timestamp
> "loses" one hour, i.e. 3600 seconds; your timestamp for 2003-10-27 12am
> is now 2003-10-26 11pm.  Because your date() call extracts only the
> date,
> your truncation error is causing you to get stuck on 2003-10-26.  This
> is
> the cause of your infinite loop.
> 
> There are several ways to avoid this problem.  The easiest way to change
> date() to gmdate().  This gets you on UTC time, which is independent of
> Daylight Saving Time or your timezone.
> 
> Hope this helps!

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to