Re: NSDateFormatter not working on iOS 5.
Re: NSDateFormatter not working on iOS 5.
- Subject: Re: NSDateFormatter not working on iOS 5.
- From: Heath Borders <email@hidden>
- Date: Tue, 31 Jan 2012 14:10:13 -0600
Peter,
If I set the locale to "en_IN" shouldn't that show the short time zone?
NSLocale *indianEnglishLocale = [[[NSLocale alloc]
initWithLocaleIdentifier:@"en_IN"] autorelease];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"Asia/Kolkata"];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.locale = indianEnglishLocale;
dateFormatter.dateFormat = @"z";
dateFormatter.timeZone = timeZone;
NSLog(@"date string: %@", [dateFormatter stringFromDate:[NSDate date]]);
NSLog(@"time zone abbreviation: %@", [timeZone
abbreviationForDate:[NSDate date]]);
output:
date string: GMT+05:30
time zone abbreviation: IST
-Heath Borders
email@hidden
Twitter: heathborders
http://heath-tech.blogspot.com
On Mon, Nov 21, 2011 at 1:54 AM, Peter Edberg <email@hidden> wrote:
>
> On Nov 17, 2011, at 10:14 AM, Matt Neuburg wrote:
>
>> On Wed, 16 Nov 2011 14:43:55 -0800, Peter Edberg <email@hidden> said:
>>> ...
>>>
>>> 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.
>>>
>>> ...
>>
>> 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.
>
>
>
> Yes, there is a disconnect here. The dictionary returned by CFTimeZoneCopyAbbreviationDictionary (and by +[NSTImeZone abbreviationDictionary]) is a standard internal mapping that does not depend on locale and is not built from the abbreviations used by ICU, and always maps ambiguous zone abbreviations to a particular zone name (as noted in the documentation) regardless of locale. This is not particularly useful for your purposes.
>
> What would be more useful in this case is function that takes a locale parameter, and returns a dictionary of the abbreviation mappings that are meaningful in that locale. This would be built from the locale-specific abbreviations used by ICU. If you agree, please file an enhancement request.
>
> - Peter E
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> 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:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden