O iOS NSDateFormatter precisa do NSLocale, mesmo que seja UTC

Tenho uma dúvida de que não consigo entender por que é assim e apelo aos deuses deste site :)

Eu tenho um encontro chegando assim:

"1982-01-01T00:00:00Z" 

Como estou exibindo o que o servidor envia (eu sei, requisitos do cliente, não é uma boa prática ...), estou forçando o dispositivo a ter esse TimeZone com o seguinte método, simplificado sem verificação de erros, não otimizado e tudo o mais tipo de coisas:

+ (NSString *) yearStringFromDate: (NSDate *) date
{
    NSDateFormatter *formatter = [NSDateFormatter new];
    [formatter setDateFormat:@"YYYY"];
    [formatter setTimeZone:[self timezoneForSIHF]];

    return [formatter stringFromDate:date];    
}

Deve ser UTC, MAS, se eu não definir o código do idioma que estou recebendo, e APENAS às vezes o ano incorreto. Então, adicionando isso, eu recebo o ano correto para todos os casos:

[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];

Para mais informações, estou testando em um dispositivo e simulador reais com diferentes idiomas (en, de, es).

Por que é isso?Por que o código do idioma afeta a data, mesmo que o fuso horário esteja correto?Por que às vezes está trabalhando com algumas datas e às vezes não? Por exemplo, 1982 está retornando sem definir o local, 1981, e se eu o defini em 1982. Isso não acontece com 1980, retornando nos dois casos 1980 (ou 1987 ou ...)

Agradecemos antecipadamente por todas as suas respostas: D Cheers!

questionAnswers(2)

yourAnswerToTheQuestion