2009-10-16 4 views
6

Добрый день,NSDateFormatter dateFromString не будет анализировать конкретную строку даты

я есть NSDateFormatter, что, кажется, не нравится определенная строка, что я пытаюсь преобразовать. этот конкретный пример:

2009-10-16T09:42:24.999605 

Все остальные мои даты отформатированы одинаково и могут быть проанализированы.

Вот код, который преобразует string в NSDate.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSS"]; 

[order setModifiedAtDate:[dateFormatter dateFromString:[orderDataDictionary valueForKey:@"ModifiedAt"]]]; 

order.ModifiedAtDate является ноль после dateFromString вызова.

Есть ли у кого-нибудь еще случаи, когда их даты не могут быть преобразованы в NSDates?

Спасибо,

ответ

7

Я был в состоянии получить дату для анализа путем удаления субсекундного поля из форматера:

NSString *test = @"2009-10-16T09:42:24.999605"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 
NSDate *testOut = [dateFormatter dateFromString:test]; 

Я подозреваю, вы можете узнать более подробно, почему он не с субсекундным поле, используя эту функцию, как она выглядит, как он делает то же самое, но возвращает сообщение об ошибке:

http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDateFormatter/getObjectValue:forString:range:error:

Во всяком случае, надеюсь, это заставит вас снова идти.

1

Вы должны попробовать строчные буквы "s" в DECIMALS месте, как это:

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.ssssss"] 

Он работал для меня.

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

  • Нет связанных вопросов^_^