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!