Bug #66102 [Com]: DateTimeZone::listIdentifiers does not return linked timezone

From: Date: Sat, 09 Aug 2014 03:57:31 +0000
Subject: Bug #66102 [Com]: DateTimeZone::listIdentifiers does not return linked timezone
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-187041@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=66102&edit=1 ID: 66102 Comment by: mal dot graty at idioplatform dot com Reported by: a dot servedio at technotraffic dot com Summary: DateTimeZone::listIdentifiers does not return linked timezone Status: Open Type: Bug Package: Date/time related Operating System: Linux, might be any PHP Version: Irrelevant Block user comment: N Private report: N New Comment: If I understand correctly, this is expected behaviour. America/Montreal is, in effect, deprecated. It will still work, for anything already using it, but going forward America/Toronto should be chosen instead. This decision was taken by the IANA, and isn't related to PHP. There have been discussions here (https://github.com/eggert/tz/commit/242980fc79ef5fb676383f91505f9cbce6ff74cb#commitcomment-5248365) and here (https://github.com/eggert/tz/issues/4) that explain the reasoning for doing so. tl;dr: Linked timezones function, but do not appear in DateTimeZone::listIdentifiers by design, since they are only linked for backward compatibility, and should not be used going forward where possible. Previous Comments: ------------------------------------------------------------------------ [2013-11-15 12:23:55] a dot servedio at technotraffic dot com Description: ------------ America/Montreal timezone was changed from a distinct timezone (entry in zone.tab) to a linked timezone (linked to America/Toronto). This change comes from a iana update (2013e) introduced in september 2013. But other previous "linked" timezone don't show up in listIdentifiers as well. While not being a distinct timezone, these are still valid (See comment from TZ Maintainer at iana: https://github.com/eggert/tz/commit/45dcf69b45087cff50282d4da64b86a7d705ddf3#commitcomment-4602830) (issue occurs in both 5.3.10 and 5.5.5 as far as I know) Test script: --------------- // all valid timezones, except last 2 are timezone "links" $timezones = array('America/Toronto', 'America/Montreal', 'Asia/Istanbul'); // they are all valid here. No Exceptions thrown foreach($timezones as $tz) { new \DateTimeZone($tz); echo "Timezone object valid with $tz \n"; } // checking against identifiers list, will not find it for the last 2 timezones $tz_list = \DateTimeZone::listIdentifiers(); foreach($timezones as $tz) { echo "Timezone $tz "; echo in_array($tz, $tz_list) ? "in list\n" : "NOT in list\n"; } Expected result: ---------------- Timezone object valid with America/Toronto Timezone object valid with America/Montreal Timezone object valid with Asia/Istanbul Timezone America/Toronto in list Timezone America/Montreal in list Timezone Asia/Istanbul in list Actual result: -------------- Timezone object valid with America/Toronto Timezone object valid with America/Montreal Timezone object valid with Asia/Istanbul Timezone America/Toronto in list Timezone America/Montreal NOT in list Timezone Asia/Istanbul NOT in list ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=66102&edit=1

« previous php.bugs (#187041) next »