NSDateFormatter не показывает сокращение часового пояса для «Азии / Калькутты» для спецификатора «z» или «zzz», только смещение по Гринвичу

На симуляторе и устройстве iOS5 NSDateFormatter не отображает сокращение часового пояса для «Азия / Калькутта» для спецификатора «z» или «zzz».

NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"Asia/Kolkata"];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"z"; // or @"zzz"
dateFormatter.timeZone = timeZone;

NSLog(@"date string: %@", [dateFormatter stringFromDate:[NSDate date]]); // "GMT+05:30", expected "IST"
NSLog(@"time zone abbreviation: %@", [timeZone abbreviationForDate:[NSDate date]]); // "IST"

Я ожидаю, что приведенный выше код для вывода:

IST
IST

но это выводит:

GMT+05:30
IST

РЕДАКТИРОВАТЬ

Установка локали на индийскую локаль, похоже, не помогает.

NSLocale *indianEnglishLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_IN"] autorelease];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"Asia/Kolkata"];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setLocale:indianEnglishLocale];
[dateFormatter setDateFormat:@"z"]; // or @"zzz"
[dateFormatter setTimeZone:timeZone];

NSLog(@"date string: %@", [dateFormatter stringFromDate:[NSDate date]]); // "GMT+05:30", expected "IST"
NSLog(@"time zone abbreviation: %@", [timeZone abbreviationForDate:[NSDate date]]); // "IST"

Я ожидаю, что приведенный выше код для вывода:

IST
IST

но это выводит:

GMT+05:30
IST

Это ошибка? Я делаю что-то неправильно?Люди упоминали, что NSDateFormatter имеет ошибки, особенно когда часовой пояс указан в строке формата. Может ли это быть одной из тех ошибок?

Ответы на вопрос(1)

Ваш ответ на вопрос