NSDateFormatter имеет разные результаты, когда iPad имеет 24-часовой формат

Я долго размышлял, почему это происходит, и понятия не имел. Если вы запустите следующий код:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy|HH:mm"];
NSDate *date = [formatter dateFromString:@"18-01-2011|06:00"];
NSDate *today = [[NSDate alloc] init];

NSLog(@"date is: %@, today is %@", date, today);

Если пользователь настроил часы в 24-часовом формате, приведенное выше печатает date is: 2011-01-18 11:00:00 +0000, today is 2011-01-19 00:56:56 +0000. Однако, когда пользователь выбирает 12-часовой формат, вышеприведенное печатает date is: (null), today is 2011-01-19 12:58:51 a.m. +0000.

Что я делаю неправильно? Разве formatter не должно быть независимым от локали? пожалуйста помоги!


person The WebMacheter    schedule 19.01.2011    source источник
comment
Apple QA1480 объясняет проблему с NSDateFormatter и 24- Час Параметр времени, который может применяться в вашем случае.   -  person    schedule 19.01.2011
comment
Спасибо aBitObvius, наконец-то я понял, как это работает! опубликуйте это как ответ, чтобы я мог проголосовать за него :)   -  person The WebMacheter    schedule 19.01.2011
comment
Как поставить 06:00 вместо 06:00?   -  person Van Du Tran    schedule 27.02.2012
comment
Вы можете посмотреть на unicode.org/reports/tr35/tr35-6. html#Date_Format_Patterns   -  person The WebMacheter    schedule 27.02.2012