]> granicus.if.org Git - php/commitdiff
- Fixed timezone guessing on Windows. (Derick, Nuno)
authorDerick Rethans <derick@php.net>
Sat, 15 Oct 2005 18:12:29 +0000 (18:12 +0000)
committerDerick Rethans <derick@php.net>
Sat, 15 Oct 2005 18:12:29 +0000 (18:12 +0000)
NEWS
ext/date/lib/fallbackmap.h
ext/date/php_date.c

diff --git a/NEWS b/NEWS
index 025a0148c6fc8dde30a34024779c06b37ab44bdc..4ed2202443b79cba3600f279e831be84f1a91efb 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,8 @@
 PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? Oct 2005, PHP 5.1 Release Candidate 3
+- Updated timezone database to version 2005.14. (Derick)
+- Fixed timezone guessing on Windows. (Derick, Nuno)
 
 14 Oct 2005, PHP 5.1 Release Candidate 2
 - Changed SQLite extension to be a shared module in Windows distribution.
index b6c37606164fe3abb92c36f28f442764c333f623..7189eb88e3045177a612bc71273b3d2946623ab9 100644 (file)
@@ -1,3 +1,4 @@
+       { "sst",   0,  -11,  "Pacific/Apia" },
        { "hst",   0,  -10,  "Pacific/Honolulu" },
        { "akst",  0,   -9,  "America/Anchorage" },
        { "akdt",  1,   -8,  "America/Anchorage" },
        { "est",   0,   -5,  "America/New_York" },
        { "edt",   1,   -4,  "America/New_York" },
        { "ast",   0,   -4,  "America/Halifax" },
-       { "adt",   0,   -3,  "America/Halifax" },
+       { "adt",   1,   -3,  "America/Halifax" },
+       { "brt",   0,   -3,  "America/Sao_Paulo" },
+       { "brst",  1,   -2,  "America/Sao_Paulo" },
+       { "azost", 0,   -1,  "Atlantic/Azores" },
+       { "azodt", 1,    0,  "Atlantic/Azores" },
        { "gmt",   0,    0,  "Europe/London" },
        { "bst",   1,    1,  "Europe/London" },
        { "cet",   0,    1,  "Europe/Paris" },
@@ -23,6 +28,7 @@
        { "pkt",   0,    5,  "Asia/Karachi" },
        { "ist",   0,  5.5,  "Asia/Calcutta" },
        { "npt",   0, 5.75,  "Asia/Katmandu" },
+       { "yekt",  1,    6,  "Asia/Yekaterinburg" },
        { "novst", 1,    7,  "Asia/Novosibirsk" },
        { "krat",  0,    7,  "Asia/Krasnoyarsk" },
        { "krast", 1,    8,  "Asia/Krasnoyarsk" },
index 73648d2d5e368a6dcb810fff805f27280353109f..b4acfd4dad8aade72725bf32db9a031a25a2a36f 100644 (file)
@@ -337,26 +337,29 @@ static char* guess_timezone(TSRMLS_D)
 
                switch (GetTimeZoneInformation(&tzi))
                {
+                       /* no DST or not in effect */
                        case TIME_ZONE_ID_UNKNOWN:
-                               /* we have no clue what it is, return UTC */
-                               php_error_docref(NULL TSRMLS_CC, E_STRICT, "It is not safe to rely on the systems timezone settings, please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We use 'UTC' instead.");
-                               tzid = "UTC";
-                               break;
-
                        case TIME_ZONE_ID_STANDARD:
+php_win_std_time:
                                tzid = timelib_timezone_id_from_abbr("", (tzi.Bias + tzi.StandardBias) * -60, 0);
                                if (! tzid) {
                                        tzid = "UTC";
                                }
-                               php_error_docref(NULL TSRMLS_CC, E_STRICT, "It is not safe to rely on the systems timezone settings, please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We use '%s' for '%.1f/no DST' instead.", tzid, (float) ((tzi.Bias + tzi.StandardBias) / -60));
+                               php_error_docref(NULL TSRMLS_CC, E_STRICT, "It is not safe to rely on the systems timezone settings, please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We use '%s' for '%.1f/no DST' instead.", tzid, ((tzi.Bias + tzi.StandardBias) / -60.0));
                                break;
 
+                       /* DST in effect */
                        case TIME_ZONE_ID_DAYLIGHT:
+                               /* If user has disabled DST in the control panel, Windows returns 0 here */
+                               if (tzi.DaylightBias == 0) {
+                                       goto php_win_std_time;
+                               }
+                               
                                tzid = timelib_timezone_id_from_abbr("", (tzi.Bias + tzi.DaylightBias) * -60, 1);
                                if (! tzid) {
                                        tzid = "UTC";
                                }
-                               php_error_docref(NULL TSRMLS_CC, E_STRICT, "It is not safe to rely on the systems timezone settings, please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We use '%s' for '%.1f/DST' instead.", tzid, (float) ((tzi.Bias + tzi.DaylightBias) / -60));
+                               php_error_docref(NULL TSRMLS_CC, E_STRICT, "It is not safe to rely on the systems timezone settings, please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We use '%s' for '%.1f/DST' instead.", tzid, ((tzi.Bias + tzi.DaylightBias) / -60.0));
                                break;
                }
                return tzid;