Commit:    dc6d283b1c277c2c99a794d17a2e2540a9f2e60e
Author:    Matt Ficken <mattfic...@php.net>         Sat, 28 Apr 2012 11:42:42 
+0200
Committer: Anatoliy Belsky <a...@php.net>      Sat, 28 Apr 2012 11:42:42 +0200
Parents:   4daab0abecd5ee583c005d8e7b6affc08af8639d
Branches:  PHP-5.3 PHP-5.4 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=dc6d283b1c277c2c99a794d17a2e2540a9f2e60e

Log:
Fix bug 61685 putenv('TZ=UTC') doesn't update timezone for localtime()

Bugs:
https://bugs.php.net/61685

Changed paths:
  M  ext/calendar/tests/unixtojd.phpt


Diff:
diff --git a/ext/calendar/tests/unixtojd.phpt b/ext/calendar/tests/unixtojd.phpt
index 11edde5..4eeb1ca 100644
--- a/ext/calendar/tests/unixtojd.phpt
+++ b/ext/calendar/tests/unixtojd.phpt
@@ -2,9 +2,34 @@
 unixtojd()
 --SKIPIF--
 <?php include 'skipif.inc'; ?>
+--ENV--
+TZ=UTC
 --FILE--
 <?php
+// this line has no impact on test output on Windows
 putenv('TZ=UTC');
+// getenv('TZ') returns 'UTC' here
+// putenv (basic_functions.c) does call tzset() when the env var being put is 
'TZ'
+//      -adding a call direct to GetEnvironmentVariableA just before tzset() 
is called to check the value of 'TZ' returns 'UTC'
+// putting a call to date_default_timezone_set() here doesn't help
+//
+// on Windows, the only thing that gets this test to pass is to put TZ=UTC in 
--ENV-- section
+//             -since putenv() is written to call tzset() when env var is TZ, 
I assume that putenv("TZ=UTC") is intended to work
+//                     and should work on all platforms(including Windows).
+// easter_date.phpt passes
+//             -doesn't use --ENV-- section
+//             -uses --INI-- section with date.timezone=UTC
+//             -uses putenv('TZ=UTC')
+// date.timezone=UTC
+//             -if ommitted from easter_date.phpt, outputs DATE_TZ_ERRMSG 
warning
+//                     -easter_date() calls mktime() and localtime()
+//                     -whereas unixtojd(1000000000) calls 
localtime(1000000000)
+//             -if ommitted from unixtojd.phpt, does NOT output DATE_TZ_ERRMSG
+//
+// unixtojd() calls php_localtime_r() which for Pacific timezone systems, 
returns a time -8 hours
+//             -this incorrect localtime is passed to the julian date 
conversion (GregorianToSDN) function which works (probably correctly)
+//                     but returns -1 day from expected because its input is 
-1 from expected
+
 echo unixtojd(40000). "\n";
 echo unixtojd(1000000000). "\n";
 echo unixtojd(1152459009). "\n";


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

Reply via email to