дата разбора работает на симуляторе не iphone? - PullRequest
1 голос
/ 20 сентября 2010

У меня есть следующий код для синтаксического анализа даты из строки:

NSString * str = @"8/13/2010 1:59:00 PM";
NSDateFormatter * dateFormat2 = [[NSDateFormatter alloc] init];
[dateFormat2 setDateFormat:@"MM/dd/yyyy h:mm:ss a"];
NSDate * orderDate = [dateFormat2 dateFromString:str ];

, но orderDate всегда возвращается в ноль, что я делаю не так?Какова правильная dateFormatString?

В эмуляторе работает нормально, но на iphone 4 ios 4.0

не имеет значения

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

использование этого исправления из комментария @Liam помогло мне это исправить, я просто публикую сообщение на случай, если это будет полезно кому-то еще,

NSDateFormatter * parser = [[NSDateFormatter alloc] init];
NSLocale * locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]autorelease];
[parser setLocale:locale ];
[parser setFormatterBehavior:NSDateFormatterBehavior10_4];
[parser setDateFormat:@"M/d/yyyy h:mm:ss a"];

NSDate * orderDate = [parser dateFromString:str ];

я понял, что обнаруженная ошибка возникает только тогда, когда пользователь iphone устанавливает свои часы на 24-часовое военное время,

0 голосов
/ 20 сентября 2010

Проблема не в формате даты, а в том, что метод init поддерживается только в Mac OS X v10.4 и Mac OS X v10.5 (возможно, именно поэтому он работает в симуляторе).Попробуйте использовать

initWithDateFormat:allowNaturalLanguage:

.См. здесь для получения дополнительной информации.

...