2009-10-16 14 views
6

Bonne journée,NSDateFormatter dateFromString n'analysera pas une chaîne de date particulière

i ont un NSDateFormatter qui ne semble pas comme une chaîne particulière que je suis en train de convertir. cette instance particulière est

2009-10-16T09:42:24.999605 

Toutes mes autres dates sont formatées de la même façon et peuvent être analysées.

Voici le code qui convertit le string dans le 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 est nul après l'appel dateFromString.

Est-ce que quelqu'un d'autre a rencontré des cas où leurs dates n'ont pas pu être converties en NSDates?

Merci,

Répondre

7

Je suis en mesure d'obtenir la date pour analyser en supprimant le champ subsecond du formatter:

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]; 

Je suppose que vous pouvez trouver plus en détail pourquoi il a échoué avec l'subsecond champ à l'aide de cette fonction comme on dirait qu'il fait la même chose, mais renvoie des messages d'erreur:

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:

En tout cas, j'espère que cela vous permettra de recommencer.

1

Vous devriez essayer "s" minuscule en place des décimales, comme ceci:

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

Il a travaillé pour moi.