Pregunta

En mi proyecto que estoy recibiendo "2008-02-01T10: 03: 23,793 a 06: 00" este formato de fecha en cadena que tengo que convertir en NSDate estoy utilizando

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

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

NSDate* dateFromString = [dateFormatter dateFromString:@"2008-02-01T10:03:23.793-06:00"];

Pero cuando estoy valor de fecha de impresión mediante NSLog que estoy recibiendo valor como nulo.

Por favor, ayúdame a salir

Gracias

¿Fue útil?

Solución

NSDateFormatter no será capaz de analizar, porque la zona horaria no es conforme con la RFC 822 o GMT estándar. El problema está en el último ":". Tenerlo se necesita el "GMT"

La fecha que tiene aspectos el RFC 3339 .

Se tendrá que utilizar un NSFormatter a analizarlo. Debe utilizar getObjectValue:forString:errorDescription:

Configurar la cadena de @"yyyy-MM-dd'T'HH:mm:ss.SSSZ".

Otros consejos

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
[formatter setLenient:YES];
NSString* buggeredTime = [[sourceDate substringToIndex:26] stringByAppendingString:[sourceDate substringFromIndex:27]];
NSDate* dueDate = [formatter dateFromString:buggeredTime];
[formatter setDateFormat:@"'Time Due: 'hh:mm a  MM/dd/yy"];
NSString* dateString = [formatter stringFromDate:dueDate];
[formatter release];

(No sé la ligera si se necesita la setLenient.)

Al igual que en vez uso (nótese el "ZZZ" en lugar de "Z"):

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

Creo que es necesario establecer un entorno nacional para el formateador también. Echar un vistazo aquí

GData de Google Objective-C tiene una clase de cliente (GDataDateTime) que puede analizar el RFC 3339 fechas.

http: // code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/Elements/GDataDateTime.m

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top