У меня недавно была похожая проблема, вместо HH
, NSDateFormatter
игнорируется hh
, a
(символ AM / PM) и G
(название циклической эры) в моем приложении.
И я с удивлением обнаружил, что если я зайду в настройку локализации моего устройства и сделаю какой-то случайный выбор, все уроды исчезнут, и ошибка не может появиться снова. Очень странно.
Затем я проверил на симуляторе, чтобы изучить его. Вот мое решение:
После того, как вы создали NSDateFormatter
, явно установите свойство языкового стандарта, даже если вы используете текущий языковой стандарт, что более важно, НЕ используйте [NSLocale currentLocale]
, этот файл содержит ошибки и может быть каким-то образом «переопределен» пользовательской настройкой, используйте systemLocale
или явное создание экземпляра NSLocale
с использованием идентификатора локали.