Часы в NSDate каждый раз в 24-часовом стиле?

У меня такой формат даты:

NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init]; [timeFormatter setDateFormat:@"HH:mm"]; 

Если я использую это:

  NSDate *myDate = [timeFormatter dateFromString:@"13:00"]; 

Он возвращает это:

  "1:00" 

Это связано с тем, что симулятор отключился 24 часа. Но для моего приложения мне действительно нужно "13:00" вместо "1:00"

ИЗМЕНИТЬ 1

Добавлен новый код:

 NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init]; [timeFormatter setDateFormat:@"HH:mm"]; NSDate *timeForFirstRow = [timeFormatter dateFromString:@"13:00"]; NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:timeForFirstRow]; NSInteger hour = [dateComponents hour]; //This will be 1 instead of 13 NSInteger minute = [dateComponents minute]; 

Если вы хотите принудительно настроить его на 12-часовой или 24-часовой режим, независимо от настройки режима пользователя 24/12 часов, вы должны установить языковой формат форматирования даты в en_US_POSIX (для 12-часового) или, скажем, en_GB для 24-часового режима.

То есть,

 NSLocale* formatterLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease]; [timeFormatter setLocale:formatterLocale]; 

Еще кое-что об этом здесь:

http://developer.apple.com/iphone/library/qa/qa2010/qa1480.html

Недавно у меня была такая же проблема, и я столкнулся с этим документом, в котором перечислены все шаблоны формата даты: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

Мне удалось получить 24-кратное время, просто используя k: mm в качестве формата даты:

 NSDateFormatter *format = [[NSDateFormatter alloc] init]; [format setDateFormat:@"k:mm"]; 

Из Apple Documentation строки форматирования времени соответствуют техническому стандарту № 35 Юникода .

Как указано в UTR # 35, верхний регистр HH дает вам 24-часовой стиль времени, в то время как в нижнем регистре hh вы hh 12-часовой стиль времени.

Короче говоря, если вам нужен 24-часовой стиль, используйте [timeFormatter setDateFormat:@"HH:mm"]; и если вам нужен 12-часовой стиль, используйте [timeFormatter setDateFormat:@"hh:mm"];

У вас должно быть два шага здесь

 NSLocale* locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; [formatter setLocale:locale]; [formatter setDateFormat:@"hh:mm a"]; 

здесь a в formatter дает формат am / pm

Если это помогает кому-либо, у меня только что возникла проблема, когда я хочу отображать время для пользователя так, как они были установлены на их устройстве:

 let timeFormatter = NSDateFormatter() timeFormatter.timeStyle = NSDateFormatterStyle.ShortStyle //get the time from the picker 

Отправьте время на наш API в стиле 24:

 timeFormatter.locale = NSLocale(localeIdentifier: "en_GB") //get the time again 
Interesting Posts

Как изменить цвет изображения панели вкладок для выбранных и невыделенных

Ошибка Ionic IOS 11 с Xcode 9

iOS 8 – измените ориентацию назад на портрет при отключении полного экрана AVPlayerViewController

Можно ли использовать NSTimer для пробуждения взломанного iPhone из глубокого сна?

Экран дисплея для iOS6 и iOS7 в симуляторе отличается

Лучший способ распространения приложения iOS без использования магазина приложений

Показать смешанные слои показывает красный UIImage, но у него нет альфа-канала

Конкретный StoryBoard для iOs 7

Скрыть кнопку в панели навигации в iPhone sdk

UISearchController dimsBackgroundDuringPresentation только тогда, когда текст поиска пуст

В ios6 установка делегата gesureRecognizers вашего pageViewController в viewController вызывает сбой

Могу ли я запустить старый архив приложений в Simulator?

Является ли NSULLConnection sendAsynchronousRequest завершающим блоком, выполненным в основном потоке?

настройка UISearchBarIconClear для UIControlStateHighlighted не работает

iOS10: я не могу получить currentUserNotificationSettings после получения push-уведомления

Давайте будем гением компьютера.