2009-10-16 16 views
6

Buenos días,NSDateFormatter dateFromString no va a analizar una cadena determinada fecha

Tengo una NSDateFormatter que no parece que les gusta una cadena particular que estoy tratando de convertir. esta instancia particular es

2009-10-16T09:42:24.999605 

Todas mis otras fechas tienen el mismo formato y se pueden analizar.

Aquí está el código que convierte el string en el 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 es nula después de la llamada dateFromString.

¿Alguien más ha encontrado casos en los que sus fechas no se han convertido en NSDates?

Gracias,

Respuesta

7

yo era capaz de conseguir la fecha para analizar eliminando el campo por debajo del segundo desde el formateador:

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

sospecho puede averiguar con mayor detalle por qué ha fallado con el subsegundo campo utilizando esta función, ya que parece que hace lo mismo, pero devuelve mensajes de error:

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:

De todos modos, espero que esto te ayude nuevamente.

1

Usted debe tratar minúscula "s" en lugar de decimales, así:

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

que trabajó para mí.

Cuestiones relacionadas