Я нашел способ заставить это работать правильно, если у кого-то есть лучшее предложение, пожалуйста, дайте мне знать. Мы должны установить предпочтительного локального пользователя в NSDateFormatter, используя следующую строку кода.
[dateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale preferredLanguages] objectAtIndex:0]] autorelease]];
Это обеспечит правильную локаль пользователя для NSDateFormatter. У некоторых людей может возникнуть соблазн использовать
[dateFormat setLocale:[NSLocale currentLocale]];
Но это не будет работать, поскольку [NSLocale currentLocale]
в системе с японским календарем возвращает en_US @ calendar = japanese, даже если пользовательский язык установлен на японский.
Понятия не имею, почему NSDateFormatter не работает автоматически с негригорианскими календарями.