Я застрял на глупой проблеме. Согласно Apple, установка свойства locale
для экземпляра NSDateFormatter
переопределяет некоторые настройки, например, предпочитает ли пользователь 12-часовой или 24-часовой формат. Вновь созданный экземпляр NSDateFormatter
инициализируется текущей локалью. WWDC 2011 Session 117 рассказывает об этой проблеме 12/24 часа в 54:00. Вот код, который я использую:
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
NSLog(@"%@",[formatter stringFromDate:date]);
Согласно документам Apple и сеансу WWDC, это должно выводить текущее время с предпочтительной локалью пользователя, даже если формат явно установлен на HH:mm
. Но по какой-то причине я всегда получаю 24-часовое представление. Я также пытался установить локаль специально для [NSLocale autoupdatingCurrentLocale]
, [NSLocale currentLocale]
и кучу локалей разных стран. Тот же результат. Есть идеи?