On Wed, 16 Nov 2011 14:43:55 -0800, Peter Edberg <pedb...@apple.com> said:
>The change in parsing of abbreviated time zone names in iOS 5.0 is a result of 
>an intentional change in the open-source ICU 4.8 library (and the open-source 
>CLDR 2.0 data that it uses), a modified version of which is used to implement 
>some of the NSDateFormatter functionality.
>
>The issue is this: With the *short* timezone formats as specified by z (=zzz) 
>or v (=vvv), there can be a lot of ambiguity. For example, "ET" for Eastern 
>Time" could apply to different time zones in many different regions. To 
>improve formatting and parsing reliability, the short forms are only used in a 
>locale if the "cu" (commonly used) flag is set for the locale. Otherwise, only 
>the long forms are used (for both formatting and parsing).
>
>For the "en" locale (= "en_US"), the cu flag is set for metazones such as 
>Alaska, America_Central, America_Eastern, America_Mountain, America_Pacific, 
>Atlantic, Hawaii_Aleutian, and GMT. It is *not* set for Europe_Central.
>
>However, for the "en_GB" locale, the cu flag *is* set for Europe_Central.
>
>So a formatter set for short timezone style "z" or "zzz" and locale "en" or 
>"en_US" will not parse "CEST" or "CET", but if the locale is instead set to 
>"en_GB" it *will* parse those. The "GMT" style will be parsed by all.
>
>If the formatter is set for the long timezone style "zzzz", and the locale is 
>any of "en", "en_US", or "en_GB", then any of the following will be parsed, 
>because they are unambiguous:
>"Pacific Daylight Time"
>"Central European Summer Time"
>"Central European Time"
>
>Hope this helps.

Thanks; I suspected that something like this might be the case. But the result, 
as I pointed out in my bug report (10447767), is that you can't round-trip the 
abbreviations that the system itself gives you:

    NSDictionary* d = (NSDictionary*)CFTimeZoneCopyAbbreviationDictionary();
    for (NSString* aZone in d.keyEnumerator)
        NSLog(@"%@ %@", aZone, [dateFormatter dateFromString:
           [NSString stringWithFormat:@"2011-11-15 06:50:59.735 %@", aZone]]);

These are *your* abbreviations (by "you" I mean the system) that aren't 
working. If they aren't going to work why are you giving them to me? Surely 
there should be some call that provides me with a list of *legal* 
abbreviations. m.

--
matt neuburg, phd = m...@tidbits.com, <http://www.apeth.net/matt/>
A fool + a tool + an autorelease pool = cool!
Programming iOS 4!
http://www.apeth.net/matt/default.html#iosbook_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to