iOS NSDateFormatter нуждается в NSLocale даже в UTC

У меня есть сомнения, что я не могу понять, почему это так, и я обращаюсь к богам этого сайта :)

У меня свидание вот так:

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

Поскольку я показываю все, что отправляет сервер (я знаю, требования клиентов, не очень хорошая практика ...), я заставляю устройство использовать TimeZone с помощью следующего метода, упрощенного без проверки ошибок, не оптимизированного и т. Д. вид вещей:

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

    return [formatter stringFromDate:date];    
}

Это должно быть UTC, НО, если я не установлю язык, который я получаю, и ПРОСТО иногда неправильный год. Таким образом, добавив это, я получаю правильный год для всех случаев:

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

Для дальнейшей информации я тестирую на реальном устройстве и симуляторе на разных языках (en, de, es).

Почему это?Почему языковой стандарт влияет на дату, даже если часовой пояс правильный?Почему иногда работает с некоторыми датами, а иногда нет? Например, 1982 возвращается без установки локали, 1981, а если я установил его 1982. Это не происходит с 1980, возвращаясь в обоих случаях 1980 (или 1987, или ...)

Заранее спасибо за все ваши ответы: D Ура!

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

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