ID: 22163
Updated by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
Status: Open
Bug Type: Date/time related
Operating System: MacOS X 10.2
PHP Version: 4.3.0
New Comment:
Maybe -- or maybe my arithmetic is off!
Could you possibly do a bit more testing and report the first time
after 01:01:03 that you get a likely result (and what it is!)?
Previous Comments:
------------------------------------------------------------------------
[2003-02-12 07:43:00] [EMAIL PROTECTED]
really screwy then :-)
With the script:
<?PHP
$the_day=mktime(0,0,0,3,30,2003);
echo "$the_day<br>";
echo "23:59:59 29-Mar = ", mktime(23, 59, 59, 3, 29, 2003), ";
01:01:03 30-Mar = ", mktime(1, 1, 3, 3, 30, 2003);
?>
I get the result:
-3662
23:59:59 29-Mar = 1048982399; 01:01:03 30-Mar = -1
------------------------------------------------------------------------
[2003-02-12 07:28:21] [EMAIL PROTECTED]
H'mmm -- I get
23:59:59 29-Mar = 1048982399; 01:00:01 30-Mar = 1048982401
on my system, which is what I expected from your report. There seems
to be an extra minute or so of limbo on yours for some reason. Can you
try again with:
mktime(1, 1, 3, 3, 30, 2003)
and let us know the result. If it's about 1048982463, then it seems
there's a whole minute in there for which you don't seem to be able to
get a valid time. If it's anything else, then something is really
screwy. Either way, it seems to be a real bug.
------------------------------------------------------------------------
[2003-02-12 05:53:05] [EMAIL PROTECTED]
ok, I used the script:
<?PHP
$the_day=mktime(0,0,0,3,30,2003);
echo "$the_day<br>";
echo "23:59:59 29-Mar = ", mktime(23, 59, 59, 3, 29, 2003), ";
01:00:01 30-Mar = ", mktime(1, 0, 1, 3, 30, 2003);
?>
and got:
-3662
23:59:59 29-Mar = 1048982399; 01:00:01 30-Mar = -61
I thought it might be a daylight savings time problem as well, hence I
thought the extra parameter I normally use would solve the problem, but
it didn't. i.e.
$the_day=mktime(0,0,0,3,30,2003,0);
------------------------------------------------------------------------
[2003-02-12 05:31:04] [EMAIL PROTECTED]
Of course, I meant "; 01:00:01 30-Mar = " in the second line (although
the mktime() call is correct)!
------------------------------------------------------------------------
[2003-02-12 05:27:07] [EMAIL PROTECTED]
I think this must be related to daylight savings time -- 30th March
2003 is certainly the date on which DST begins in western Europe.
Can you try this, and see what you get:
echo "23:59:59 29-Mar = ", mktime(23, 59, 59, 3, 29, 2003),
"; 00:00:01 30-Mar = ", mktime(1, 0, 1, 3, 30, 2003);
If those timestamps are 2 seconds apart, then your original mktime() is
falling into the limbo of the "lost hour" due to the clocks going back
(the second after 29-Mar-2003 23:59:59 must be regarded as 30-Mar-2003
01:00:00), and the algorithm used on your system returns a nonsense
value when that happens.
Mike
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/22163
--
Edit this bug report at http://bugs.php.net/?id=22163&edit=1