Por qué NSDateFormatter no puede analizar la fecha del formato ISO 8601

Posible duplicado:
Convirtiendo un sello de tiempo ISO 8601 en un NSDate: ¿Cómo se maneja uno con el desplazamiento de tiempo UTC?

Yo uso los raíles como back-end, la salida de fecha predeterminada es 2008-12-29T00: 27: 42-08: 00

Pero después de mi investigación NSDateFormatter no puede soportarlo, excepto que cambie la fecha a 2008-12-29T00: 27: 42-0800

Aquí está el código que usé para analizar la fecha ISO 8601, pero no es trabajo

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; NSLog(@"%@", [dateFormatter dateFromString:@"2008-12-29T00:27:42-08:00"]); 

¿Algunas ideas?

El problema es con la zona horaria al final.

Debe tenerlo como: GMT-0X: 00 o como -0X00 sin separación entre horas y minutos.

Las siguientes dos combinaciones funcionan:

Combo 1: utilice el formato GMT (GMT-0X: 00) y ZZZZ

 NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"]; NSLog(@"DATE FORMAT:%@", [dateFormatter dateFromString:@"2008-12-29T00:27:42GMT-08:00"]); 

Combo 2: uso del formato RFC 822 (-0X00) y ZZZ

 dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; NSLog(@"DATE FORMAT:%@", [dateFormatter dateFromString:@"2008-12-29T00:27:42-0800"]);