ID:               20382
 Updated by:       [EMAIL PROTECTED]
 Reported By:      nickj-phpbugs at nickj dot org
-Status:           Assigned
+Status:           Feedback
 Bug Type:         Date/time related
 Operating System: *
 PHP Version:      5CVS, 4CVS (2004-04-13)
 Assigned To:      derick
 New Comment:

All those tests run fine for me, perhaps my latest commit already
changed this, so please try a new snapshot.

About the WIndows tests, they are not going to work yet because on
Windows the date() function doesn't understand timezone names like
"Asia/Dubai". This is going to be implement before 5.1 is released if I
have the time.


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

[2005-06-18 01:29:54] nickj-phpbugs at nickj dot org

Reopening, as the original test case is now working correctly (thank
you!), but there are others that don't appear to be producing the
expected results.

The ones that don't work seem to differ between operating systems. For
Linux, I've included some of these below as a series of ten small,
separate, simple test cases, structured in the format you've indicated
you prefer. Then below that I've included another ten cases for Windows
2000 systems, in the same format:

======================================================
<?php

putenv("TZ=Europe/Andorra");
$tStamp = mktime (17, 17, 17, 1, 24764, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Asia/Dubai");
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Asia/Kabul");
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=America/Antigua");
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=America/Anguilla");
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Europe/Tirane");
$tStamp = mktime (17, 17, 17, 1, 4849, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Asia/Yerevan");
$tStamp = mktime (17, 17, 17, 1, 24764, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=America/Curacao");
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Africa/Luanda");
$tStamp = mktime (17, 17, 17, 1, 1, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Antarctica/McMurdo");
$tStamp = mktime (17, 17, 17, 1, 24743, 1970);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";

?>
======================================================
Results (on my system, a Debian GNU/Linux Woody 3.0r6 box), are as
follows:


ludo:~/tmp/php-5.1-dev/php5-200506170030/sapi/cli# ./php
~/test/test-output.php 
tStamp=Monday 2037-10-19 17:17:17 CEST
result=Monday 2037-10-26 01:00:00 CET
wanted=Monday            00:00:00

tStamp=Thursday 1970-01-01 17:17:17 GST
result=Monday 1970-01-05 04:00:00 GST
wanted=Monday            00:00:00

tStamp=Thursday 1970-01-01 17:17:17 AFT
result=Monday 1970-01-05 04:30:00 AFT
wanted=Monday            00:00:00

tStamp=Thursday 1970-01-01 17:17:17 AST
result=Sunday 1970-01-04 20:00:00 AST
wanted=Monday            00:00:00

tStamp=Thursday 1970-01-01 17:17:17 AST
result=Sunday 1970-01-04 20:00:00 AST
wanted=Monday            00:00:00

tStamp=Monday 1983-04-11 17:17:17 CET
result=Monday 1983-04-18 01:00:00 CEST
wanted=Monday            00:00:00

tStamp=Monday 2037-10-19 17:17:17 AMST
result=Monday 2037-10-26 04:00:00 AMT
wanted=Monday            00:00:00

tStamp=Thursday 1970-01-01 17:17:17 AST
result=Sunday 1970-01-04 20:00:00 AST
wanted=Monday            00:00:00

tStamp=Thursday 1970-01-01 17:17:17 WAT
result=Monday 1970-01-05 01:00:00 WAT
wanted=Monday            00:00:00

tStamp=Monday 2037-09-28 17:17:17 NZST
result=Monday 2037-10-05 13:00:00 NZDT
wanted=Monday            00:00:00

ludo:~/tmp/php-5.1-dev/php5-200506170030/sapi/cli# 

======================================================

However, on a windows 2000 system, the above tests work OK, but these
tests do not:

======================================================

<?php

putenv("TZ=Australia/Adelaide");
$tStamp = mktime (17, 17, 17, 1, 1, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Australia/Darwin");
$tStamp = mktime (17, 17, 17, 1, 88, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Australia/Perth");
$tStamp = mktime (17, 17, 17, 1, 1, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=America/Aruba");
$tStamp = mktime (17, 17, 17, 1, 88, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Asia/Baku");
$tStamp = mktime (17, 17, 17, 1, 1, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Europe/Sarajevo");
$tStamp = mktime (17, 17, 17, 1, 1, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=America/Barbados");
$tStamp = mktime (17, 17, 17, 1, 1, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Asia/Dacca");
$tStamp = mktime (17, 17, 17, 1, 1, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Europe/Brussels");
$tStamp = mktime (17, 17, 17, 1, 1, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";


putenv("TZ=Africa/Ouagadougou");
$tStamp = mktime (17, 17, 17, 1, 88, 1971);
print "tStamp=". date("l Y-m-d H:i:s T", $tStamp). "\n";
$strtotime_tstamp = strtotime("Monday", $tStamp);
print "result=".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
print "wanted=Monday            00:00:00\n\n";

?>

======================================================
Results on a Windows 2000 SP4 box, are as follows:


G:\PHP bugs\PHP bug
20382\php5.1-dev\php5-win32-200506171830>php-cgi.exe
..\..\new-test-output.php
Content-type: text/html
X-Powered-By: PHP/5.1.0-dev

tStamp=Friday 1971-01-01 17:17:17 Aus
result=Sunday 1971-01-03 14:30:00 Aus
wanted=Monday            00:00:00

tStamp=Monday 1971-03-29 17:17:17 Aus
result=Monday 1971-04-05 01:00:00 tra
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 Aus
result=Sunday 1971-01-03 16:00:00 Aus
wanted=Monday            00:00:00

tStamp=Monday 1971-03-29 17:17:17 Ame
result=Monday 1971-04-05 01:00:00 ric
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 Asi
result=Sunday 1971-01-03 20:00:00 Asi
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 Eur
result=Sunday 1971-01-03 23:00:00 Eur
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 Ame
result=Monday 1971-01-04 04:00:00 Ame
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 Asi
result=Sunday 1971-01-03 18:00:00 Asi
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 Eur
result=Sunday 1971-01-03 23:00:00 Eur
wanted=Monday            00:00:00

tStamp=Monday 1971-03-29 17:17:17 Afr
result=Monday 1971-04-05 01:00:00 ica
wanted=Monday            00:00:00


G:\PHP bugs\PHP bug 20382\php5.1-dev\php5-win32-200506171830>

====================================================================
And running the win2000 tests on the Linux box give this:

ludo:~/tmp/php-5.1-dev/php5-200506170030/sapi/cli# ./php
~/test/new-test-win2000.php 
tStamp=Friday 1971-01-01 17:17:17 CST
result=Monday 1971-01-04 00:00:00 CST
wanted=Monday            00:00:00

tStamp=Monday 1971-03-29 17:17:17 CST
result=Monday 1971-04-05 09:30:00 CST
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 WST
result=Monday 1971-01-04 00:00:00 WST
wanted=Monday            00:00:00

tStamp=Monday 1971-03-29 17:17:17 AST
result=Sunday 1971-04-04 20:00:00 AST
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 BAKT
result=Monday 1971-01-04 00:00:00 BAKT
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 CET
result=Monday 1971-01-04 00:00:00 CET
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 AST
result=Monday 1971-01-04 00:00:00 AST
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 DACT
result=Monday 1971-01-04 00:00:00 DACT
wanted=Monday            00:00:00

tStamp=Friday 1971-01-01 17:17:17 CET
result=Monday 1971-01-04 00:00:00 CET
wanted=Monday            00:00:00

tStamp=Monday 1971-03-29 17:17:17 GMT
result=Monday 1971-04-05 00:00:00 GMT
wanted=Monday            00:00:00


I.e. the 2nd and 4th results are also wrong on Linux, the remaining 8
look correct (so there is some overlap in incorrect results between
operating systems, although most of the time there is not).

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

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

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

Reply via email to