Ответ 1
Отредактировано: Чтобы увидеть проблему, в настройках вашего телефона выберите регион, для которого по умолчанию используется 24-часовое время, например "Великобритания" или "Франция". Затем отключите "24-часовое время" из настроек. Теперь, если вы создаете NSDateFormatter без установки его локали, "HH" не будет работать. Чтобы обойти эту проблему, установите языковой стандарт (даже тот, который находится в тот момент в телефоне), например. для вышеуказанного кода мы могли бы добавить:
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
Любая локаль будет работать, даже en_GB. Это, очевидно, ошибка, а не какое-то странное представление стандарта юникода, потому что если вы установили регион, который по умолчанию имеет значение 12 часов, ползунок "24 часа времени" не влияет на работу "HH", а если вы находитесь в регионе, который по умолчанию имеет значение 24 часа, тогда этот слайдер в настройках повлияет на то, как работает ваш код.