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

 ID:               51975
 User updated by:  V-o-E at gmx dot de
 Reported by:      V-o-E at gmx dot de
 Summary:          Missing DST free (UTC±X) timezones in
                   DateTimeZone::listIdentifiers()
 Status:           Bogus
 Type:             Bug
 Package:          Date/time related
 Operating System: All
 PHP Version:      5.3.2

 New Comment:

oh, i see.



# We use POSIX-style signs in the Zone names and the output
abbreviations,

# even though this is the opposite of what many people expect.

# POSIX has positive signs west of Greenwich, but many people expect

# positive signs east of Greenwich.  For example, TZ='Etc/GMT+4' uses

# the abbreviation "GMT+4" and corresponds to 4 hours behind UTC

# (i.e. west of Greenwich) even though many people would expect it to

# mean 4 hours ahead of UTC (i.e. east of Greenwich).

#

# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation

# (which is not yet supported by the tz code) allows for

# TZ='<GMT-4>+4'; if you want time zone abbreviations conforming to

# ISO 8601 you can use TZ='<-0400>+4'.  Thus the commonly-expected

# offset is kept within the angle bracket (and is used for display)

# while the POSIX sign is kept outside the angle bracket (and is used

# for calculation).

#

# Do not use a TZ setting like TZ='GMT+4', which is four hours behind

# GMT but uses the completely misleading abbreviation "GMT".



# Earlier incarnations of this package were not POSIX-compliant,

# and had lines such as

#               Zone    GMT-12          -12     -       GMT-1200

# We did not want things to change quietly if someone accustomed to the
old

# way does a

#               zic -l GMT-12

# so we moved the names into the Etc subdirectory.



Zone    Etc/GMT-14      14      -       GMT-14  # 14 hours ahead of GMT

Zone    Etc/GMT-13      13      -       GMT-13

Zone    Etc/GMT-12      12      -       GMT-12

Zone    Etc/GMT-11      11      -       GMT-11

Zone    Etc/GMT-10      10      -       GMT-10

Zone    Etc/GMT-9       9       -       GMT-9

Zone    Etc/GMT-8       8       -       GMT-8

Zone    Etc/GMT-7       7       -       GMT-7

Zone    Etc/GMT-6       6       -       GMT-6

Zone    Etc/GMT-5       5       -       GMT-5

Zone    Etc/GMT-4       4       -       GMT-4

Zone    Etc/GMT-3       3       -       GMT-3

Zone    Etc/GMT-2       2       -       GMT-2

Zone    Etc/GMT-1       1       -       GMT-1

Zone    Etc/GMT+1       -1      -       GMT+1

Zone    Etc/GMT+2       -2      -       GMT+2

Zone    Etc/GMT+3       -3      -       GMT+3

Zone    Etc/GMT+4       -4      -       GMT+4

Zone    Etc/GMT+5       -5      -       GMT+5

Zone    Etc/GMT+6       -6      -       GMT+6

Zone    Etc/GMT+7       -7      -       GMT+7

Zone    Etc/GMT+8       -8      -       GMT+8

Zone    Etc/GMT+9       -9      -       GMT+9

Zone    Etc/GMT+10      -10     -       GMT+10

Zone    Etc/GMT+11      -11     -       GMT+11

Zone    Etc/GMT+12      -12     -       GMT+12



This is output of "etcetera" file from "Olson tz database".

It is not deprecated, isn't it?



This are the "Etc*" zones from "backward" file:

Link    Etc/GMT                 GMT+0

Link    Etc/GMT                 GMT-0

Link    Etc/GMT                 GMT0

Link    Etc/GMT                 Greenwich

Link    Etc/UCT                 UCT

Link    Etc/UTC                 UTC

Link    Etc/UTC                 Universal

Link    Etc/UTC                 Zulu



So i think the "Etc/GMT±x" timezones from "etcetera" should be in
output of:

DateTimeZone::listIdentifiers()

DateTimeZone::listIdentifiers(DateTimeZone::ALL)

DateTimeZone::listIdentifiers(DateTimeZone::UTC)



and not only in:

DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC)



what is your opinion?


Previous Comments:
------------------------------------------------------------------------
[2010-06-02 15:41:15] ahar...@php.net

The Olson tz database -- which forms the basis of the time zone support
both for PHP and pretty much every operating system not called Windows
-- doesn't define any time zones relative to UTC other than the
Etc/GMT±x time zones and the UTC time zone itself.



The Etc/GMT time zones are the "wrong way around", but that's been the
case for decades, and isn't something we (or probably anyone else) can
fix without confusing people even more.

------------------------------------------------------------------------
[2010-06-02 15:27:44] V-o-E at gmx dot de

Description:
------------
There are not daylight saving time free timezones (UTC±X) in
DateTimeZone::listIdentifiers() (same with DateTimeZone::ALL) except
UTC±0.



As workaround i can use buggy "Etc/GMT±X" from
DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC):



Etc/GMT+2 => Etc/GMT-2

Etc/GMT-2 => Etc/GMT+2



See: http://en.wikipedia.org/wiki/List_of_time_zones_by_UTC_offset



Test script:
---------------
var_dump(DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC));



var_dump(DateTimeZone::listIdentifiers());



$a = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC);

var_dump($a[373]); // output: string(9) "Etc/GMT+2"



$b = DateTimeZone::listIdentifiers();

var_dump($b[373]); // output: string(15) "Pacific/Fakaofo"



date_default_timezone_set('UTC');

echo date('H:i:s') . "\n"; // output: 13:13:01



date_default_timezone_set('Etc/GMT+2');

echo date('H:i:s') . "\n"; // output: 11:13:01



date_default_timezone_set('Etc/GMT-2');

echo date('H:i:s') . "\n"; // output: 15:13:01



date_default_timezone_set('Pacific/Fakaofo');

echo date('H:i:s') . "\n"; // output: 01:13:01

Expected result:
----------------
array(564) {

...

}

array(xyz) {

...

  [405]=>

  string(3) "UTC"

  [406]=>

  string(3) "UTC-12"

  [407]=>

  string(3) "UTC-11"

...

}

string(9) "Pacific/Fakaofo"

string(15) "Pacific/Fakaofo"

13:16:08

15:16:08

11:16:08

03:16:08

Actual result:
--------------
array(564) {

...

}

array(406) {

...

  [405]=>

  string(3) "UTC"

}

string(9) "Etc/GMT+2"

string(15) "Pacific/Fakaofo"

13:16:08

11:16:08

15:16:08

03:16:08


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



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

Reply via email to