From:             [EMAIL PROTECTED]
Operating system: Windows NT/XP
PHP version:      4.0.6
PHP Bug Type:     Date/time related
Bug description:  date(I) does not correctly identify daylight saving time

Bug id #13880
Status: Bogus  User Modify   Dev Modify 
From: [EMAIL PROTECTED] 
Reported: 2001-10-30 19:25:30 
Type: Date/time related 
OS: Windows NT/XP 
PHP Version: 4.0.6 
Summary: date(I) does not correctly identify daylight saving time 

--------------------------------------------------------------------------------
[2001-10-30 19:25:30] [EMAIL PROTECTED]

There appears to be a bug in the date() function when using the I (capital
i) format. 
Date(I) always returns 0 (zero) no matter what the date is.  Date(I) is
used to determin
if a date occurs during daylight saving time or not.  Here is the script I
am using:

if (date(I, mktime(0,0,0,6,1,2001))=1) {
    do this;
} else {
    do that;
}

No mater what the date is it always returns zero.  I have tried setting
date(I) to a
variable outside of the if/then statement but it always sets the variable
to zero.  I have
tried setting the timestamp to a variable first and using it in date():

$ts = mktime(0,0,0,6,1,2001);
$ds = date(I, $ts);

That doesn't work either, returns zero. No matter what I do it just doesn't
work.  Does
this part of date() even work?

Running PHP 4.05 with Zend Optimizer v1.1.0 on Windows NT 4.0 build 1381,
CGI version,
Apache/1.3.20 .  Also doesn't work on PHP 4.06 on Windows XP, CGI
version,
Apache/1.3.22.

Thank you for your consideration and hard work.  PHP is a great product. 
Keep up the good
work!

Bradford Plummer
[2001-10-30 19:33:48] [EMAIL PROTECTED]

Two obvious problems with your test script.

I should be in quotes, and = should be ==.  Make those changes and try
again.

This works okay on Linux.

-Chris
[2001-10-30 19:36:28] [EMAIL PROTECTED]

Works on Windows XP as well with 4.0.6.

-Chris
[2001-10-30 19:36:33] [EMAIL PROTECTED]

Works on Windows XP as well with 4.0.6.

-Chris
[2001-11-01 01:34:05] [EMAIL PROTECTED]

cnewbill said this:

Two obvious problems with your test script.
I should be in quotes, and = should be ==.  Make those changes and try
again.
This works okay on Linux.
-Chris

------------------------------------------------------

First of all...
You are right.  I left the quotes out of my bug report.  I was, however,
using them in the
actual script.  If you tested my script you may have also noticed that the
following
commands return a zero on a Win32 system when they should return a one:

echo date("I", mktime(0,0,0,5,1,2001));
echo date("I", mktime(0,0,0,6,1,2001));
echo date("I", mktime(0,0,0,7,1,2001));
echo date("I", mktime(0,0,0,8,1,2001));
echo date("I", mktime(0,0,0,9,1,2001));
echo date("I", mktime(0,0,0,10,1,2001));

  Also returning a zero instead of a one are:

echo date("I", mktime(0,0,0,date("m")-1,date("d"), 
date("Y")));
echo date("I", mktime(0,0,0,date("m")-2,date("d"), 
date("Y")));
echo date("I", mktime(0,0,0,date("m")-3,date("d"), 
date("Y")));
echo date("I", mktime(0,0,0,date("m")-4,date("d"), 
date("Y")));
echo date("I", mktime(0,0,0,date("m")-5,date("d"), 
date("Y")));
echo date("I", mktime(0,0,0,date("m")-6,date("d"), 
date("Y")));
echo date("I", mktime(0,0,0,date("m")-7,date("d"), 
date("Y")));

    So it doesn't seem to matter how I format the original if/then
statement because it
will always evaluate incorrectly because date() is doing something screwy
on Win32.  Also,
I found something else while working on this.  When using the M format,
date() has a
problem figuring out what month name it is supposed to return.  Here is
some example
script:

echo date("M, I", mktime(0,0,0,date("m")-1,date("d"), 
date("Y")));
echo "<br>";
echo date("M, I", mktime(0,0,0,date("m")-2,date("d"), 
date("Y")));
echo "<br>";
echo date("M, I", mktime(0,0,0,date("m")-3,date("d"), 
date("Y")));
echo "<br>";
echo date("M, I", mktime(0,0,0,date("m")-4,date("d"), 
date("Y")));
echo "<br>";
echo date("M, I", mktime(0,0,0,date("m")-5,date("d"), 
date("Y")));
echo "<br>";
echo date("M, I", mktime(0,0,0,date("m")-6,date("d"), 
date("Y")));
echo "<br>";
echo date("M, I", mktime(0,0,0,date("m")-7,date("d"), 
date("Y")));

      That script returns this on my Win32 system:

Oct, 0
Aug, 0
Jul, 0
Jul, 0
May, 0
May, 0
Mar, 0

      At least it did for my yesterday (31 Oct 2001).  Notice how Jul and
May are doubled?
 What happened to Apr and Jun?

Could you check in to these issues and let me know what you find out.  By
the way, thank
you for responding so quickly.
Bradford Plummer

-- 
Edit bug report at: http://bugs.php.net/?id=13900&edit=1


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to