2016-11-14 1 views
2

Это похоже на ошибку IOS 10. Это нормально в iOS 8 и 9.iOS 10 ошибка? Описание часа NSDate с районом Японии и 24-часовым временем выключено

Описание часа неправильное для [NSDate date]. Он добавляет 24-часовое описание и 12-часовое описание. Я не использую NSDateFormatter. Только настройки по умолчанию.

На реальном IOS 10 устройств, в настройках:

  • Установить область в Японию в Настройки> Общие> Язык & область> Форматы область> Регион
  • Установить 24-часовой Time Off в меню Настройки> Общие > Дата & время> 24-часовой

Тогда с:

NSLog(@"Date is %@", [NSDate date].description); 

Фактический выход журнала:

Date is 2016-11-14 44:14:57 AM +0000 

Ожидаемые результаты:

Date is 2016-11-14 4:14:57 AM +0000 

Редактировать (Добавление другой пример):

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd hh:mm:ss a"; 
NSString *dateString = @"1985-04-12 7:20:50 PM"; 
NSDate *date = [dateFormatter dateFromString:dateString]; 
NSLog(@"Date is %@", date.description); 

Фактический выход:

Date is 1985-04-12 1010:20:50 AM +0000 

Ожидаемое НУ tput

Date is 1985-04-12 10:20:50 AM +0000 

Если я изменяю час до 24-часовом формате (HH):

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss a"; 
NSString *dateString = @"1985-04-12 7:20:50 PM"; 
NSDate *date = [dateFormatter dateFromString:dateString]; 
NSLog(@"Date is %@", date.description); 

Фактический выход:

Date is (null) 

Ожидаемый результат:

Date is 1985-04-12 10:20:50 AM +0000 
+0

24-часовое время не включено, оно отключено – unitwhy

+0

Отправить отчет об ошибке Apple. Не забудьте включить тривиальное примерное приложение, которое реплицирует проблему, чтобы они могли ее исправить. – rmaddy

+0

Я отправил отчет об ошибке Apple. Спасибо за совет – unitwhy

ответ

0

Мы были также столкнулся с аналогичной проблемой для iOS 10.x и исправил ее g

NSLocale * POSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier: @ "en_US_POSIX"]; dateFormatter.locale должен быть равен (POSIXLocale);

Смежные вопросы