ID:               33414
 User updated by:  nickj-phpbugs at nickj dot org
 Reported By:      nickj-phpbugs at nickj dot org
 Status:           Closed
 Bug Type:         Date/time related
 Operating System: Debian Woody GNU/Linux 3.0r6
 PHP Version:      5CVS-2005-06-22 (dev)
 Assigned To:      derick
 New Comment:

You are quite correct. I apologize for reopening. I honestly never knew
that a time shift could skip a day - how bizarre!

Here is an abstract of a New York Times article about the 1993
Kwajalein jump:
http://select.nytimes.com/gst/abstract.html?res=F00610F73D5A0C718EDDA10894DB494D81
, and there is a little bit of info about it here too:
http://en.wikipedia.org/wiki/Time_zone#UTC_.2B_12.2C_M

Here is some info about the 1994/1995 Kiribati jump:
http://wikitravel.org/en/Kiribati#Understand . As for Enderbury, after
1979 it became part of Kiribati (ref:
http://en.wikipedia.org/wiki/Enderbury_Island ), which explains why it
has the same jump as Kiribati.


Previous Comments:
------------------------------------------------------------------------

[2005-10-07 23:49:56] [EMAIL PROTECTED]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

Those three are correct, the mentioned days simply don't exist as at
this time the zones switched from -11 to +13 or similar:

[EMAIL PROTECTED]:~$ zdump -v Pacific/Kwajalein
Pacific/Kwajalein  Fri Aug 20 11:59:59 1993 UTC = Thu Aug 19 23:59:59
1993 MHT isdst=0 gmtoff=-43200
Pacific/Kwajalein  Fri Aug 20 12:00:00 1993 UTC = Sat Aug 21 00:00:00
1993 MHT isdst=0 gmtoff=43200

[EMAIL PROTECTED]:~$ zdump -v Pacific/Enderbury
Pacific/Enderbury  Sun Jan  1 10:59:59 1995 UTC = Sat Dec 31 23:59:59
1994 PHOT isdst=0 gmtoff=-39600
Pacific/Enderbury  Sun Jan  1 11:00:00 1995 UTC = Mon Jan  2 00:00:00
1995 PHOT isdst=0 gmtoff=46800

[EMAIL PROTECTED]:~$ zdump -v Pacific/Kiritimati
Pacific/Kiritimati  Sun Jan  1 09:59:59 1995 UTC = Sat Dec 31 23:59:59
1994 LINT isdst=0 gmtoff=-36000
Pacific/Kiritimati  Sun Jan  1 10:00:00 1995 UTC = Mon Jan  2 00:00:00
1995 LINT isdst=0 gmtoff=50400


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

[2005-09-05 08:38:35] nickj-phpbugs at nickj dot org

Looking very good but I'm still showing just a handful that are giving
the wrong days, namely:

===================================================================
ludo:~/tmp/php-5.1-dev# cat my-bugs/bug33414/win32-wrong-days.php
<?php 

$tz="Pacific/Kwajalein";
print "TZ=$tz\n";
putenv("TZ=$tz");
$tStamp = mktime (17, 17, 17, 1, 8261, 1971);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("Friday", $tStamp);
print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Friday            00:00:00\n\n";

$tz="Pacific/Enderbury";
print "TZ=$tz\n";
putenv("TZ=$tz");
$tStamp = mktime (17, 17, 17, 1, 8760, 1971);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("Sunday", $tStamp);
print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Sunday            00:00:00\n\n";

$tz="Pacific/Kiritimati";
print "TZ=$tz\n";
putenv("TZ=$tz");
$tStamp = mktime (17, 17, 17, 1, 8760, 1971);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("Sunday", $tStamp);
print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Sunday            00:00:00\n\n";

?>
===================================================================

Output with the 5.1.x-dev CVS snapshot from 200509050430 on a Linux
system:
===================================================================
ludo:~/tmp/php-5.1-dev# php5-200509050430/sapi/cli/php
my-bugs/bug33414/win32-wrong-days.php
TZ=Pacific/Kwajalein
tStamp=Friday 1993-08-13 17:17:17 KWAT 0
result=Saturday 1993-08-21 00:00:00 MHT 0
wanted=Friday            00:00:00

TZ=Pacific/Enderbury
tStamp=Sunday 1994-12-25 17:17:17 PHOT 0
result=Monday 1995-01-02 00:00:00 PHOT 0
wanted=Sunday            00:00:00

TZ=Pacific/Kiritimati
tStamp=Sunday 1994-12-25 17:17:17 LINT 0
result=Monday 1995-01-02 00:00:00 LINT 0
wanted=Sunday            00:00:00

ludo:~/tmp/php-5.1-dev# 
===================================================================

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

[2005-09-01 14:42:49] [EMAIL PROTECTED]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.



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

[2005-07-06 06:14:20] nickj-phpbugs at nickj dot org

Most of the test cases are fixed in php5-200507060230 (including the 3
possible regressions listed above from bug #20382).

Just the following 3 seem to be giving incorrect results now (found
after doing another exhaustive check on a win32 system, and confirming
the results are also incorrect on a Linux system):

<?php 

$tz="Pacific/Kwajalein";
print "TZ=$tz\n";
putenv("TZ=$tz");
$tStamp = mktime (17, 17, 17, 1, 8261, 1971);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("Friday", $tStamp);
print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Friday            00:00:00\n\n";

$tz="Pacific/Enderbury";
print "TZ=$tz\n";
putenv("TZ=$tz");
$tStamp = mktime (17, 17, 17, 1, 8760, 1971);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("Sunday", $tStamp);
print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Sunday            00:00:00\n\n";

$tz="Pacific/Kiritimati";
print "TZ=$tz\n";
putenv("TZ=$tz");
$tStamp = mktime (17, 17, 17, 1, 8760, 1971);
print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n";
$strtotime_tstamp = strtotime("Sunday", $tStamp);
print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Sunday            00:00:00\n\n";

?>

Output is:
===========================================
ludo:~/tmp/php-5.1-dev# php5-200507060230/sapi/cli/php
bug33414/win32-wrong-days.php 
TZ=Pacific/Kwajalein
tStamp=Friday 1993-08-13 17:17:17 KWAT 0
result=Saturday 1993-08-21 00:00:00 MHT 0
wanted=Friday            00:00:00

TZ=Pacific/Enderbury
tStamp=Sunday 1994-12-25 17:17:17 PHOT 0
result=Monday 1995-01-02 00:00:00 PHOT 0
wanted=Sunday            00:00:00

TZ=Pacific/Kiritimati
tStamp=Sunday 1994-12-25 17:17:17 LINT 0
result=Monday 1995-01-02 00:00:00 LINT 0
wanted=Sunday            00:00:00

ludo:~/tmp/php-5.1-dev#
===========================================

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

[2005-06-22 11:06:31] nickj-phpbugs at nickj dot org

Sorry, one further update - I think it would be better if my test
script printed out the exact expected results, rather than just testing
for the correct day. The reason that I say this is that I am seeing a
possible regression of bug #20382, not just for the Vienna timezone,
but for 2 other timezones as well. I.e. when I run these commands:

./get-and-build-php-5.1-dev 200506220830
cd php5-200506220830
# Run the date-related tests:
TEST_PHP_EXECUTABLE=sapi/cli/php sapi/cli/php run-tests.php
../bug33414/bug33414.phpt ext/date/tests/*.phpt
# Can then see the output of bug20382-2 with:
diff -u ext/date/tests/bug20382-2.exp ext/date/tests/bug20382-2.out

Then the diff shows this:
==================================================
ludo:~/tmp/php-5.1-dev/php5-200506220830# # Can then see the output of
bug20382-2 with:
ludo:~/tmp/php-5.1-dev/php5-200506220830# diff -u
ext/date/tests/bug20382-2.exp ext/date/tests/bug20382-2.out
--- ext/date/tests/bug20382-2.exp       Wed Jun 22 18:58:14 2005
+++ ext/date/tests/bug20382-2.out       Wed Jun 22 18:58:14 2005
@@ -105,17 +105,17 @@
 
 America/Buenos_Aires
 ts     = Monday 1974-09-30 17:17:17 ART
-result = Monday 1974-10-07 00:00:00 ART
+result = Monday 1974-10-07 01:00:00 ARST
 wanted = Monday            00:00:00
 
 America/Rosario
 ts     = Monday 1974-09-30 17:17:17 ART
-result = Monday 1974-10-07 00:00:00 ART
+result = Monday 1974-10-07 01:00:00 ARST
 wanted = Monday            00:00:00
 
 Europe/Vienna
 ts     = Monday 1980-03-31 17:17:17 CET
-result = Monday 1980-04-07 00:00:00 CEST
+result = Sunday 1980-04-06 23:00:00 CET
 wanted = Monday            00:00:00
 
 Asia/Baku
ludo:~/tmp/php-5.1-dev/php5-200506220830# 
==================================================

I.e. Either not getting the expected results in America/Buenos_Aires
and America/Rosario, as well as Vienna, or the "--EXPECT--" portion of
the test is wrong.

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

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/33414

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

Reply via email to