On 10 April 2004 16:11, Brian Dunning wrote:

> Check this out: I'm returning a list of the last 30 days, looping
> through i, subtracting it from $end_date where $end_date is 2004-04-10
> 00:00:00. I'm just trying to derive a timestamp $check_date for each
> iteration, like 1081321200. Here's the code within the loop:
> 
> $check_date = mktime(0, 0, 0, substr($end_date, 5, 2),
> substr($end_date, 8, 2) - $i, substr($end_date, 0, 4), -1);
> 
> Note that this works PERFECTLY for every date, and always has. Except
> for one particular day. When $end_date - $i is supposed to be
> April 4,
> the timestamp returned is -7262, which it thinks is 12/31/1969.

This looks like a Daylight Savings timeshift bug on your system (and there are more of 
those around than you can shake a stick at!).  Because of such problems, you should 
never use a time anywhere near the DST hour-change when you are calculating 
consecutive dates, and most especially not a time that could conceivably be shifted 
into the adjacent day (i.e. 00:00-00:59) -- always use something squarely in the 
middle of the day, such as midday:

   $check_date = mktime(12, 0, 0, substr($end_date, 5, 2), substr($end_date, 8, 2) - 
$i, substr($end_date, 0, 4), -1);

Cheers!

Mike

---------------------------------------------------------------------
Mike Ford,  Electronic Information Services Adviser,
Learning Support Services, Learning & Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Beckett Park, LEEDS,  LS6 3QS,  United Kingdom
Email: [EMAIL PROTECTED]
Tel: +44 113 283 2600 extn 4730      Fax:  +44 113 283 3211 

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

Reply via email to