iphone - Por qué NSDateFormatter no puede analizar la fecha del formato ISO 8601
objective-c ios (1)
El problema es con la zona horaria en el final.
Debe tenerlo como: GMT-0X: 00 o como -0X00 sin separar entre horas y minutos.
Las siguientes dos combinaciones funcionan:
Combo 1: use 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: use el 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"]);
Posible duplicado:
Convertir una marca de tiempo ISO 8601 en un NSDate: ¿Cómo se trata el desplazamiento de tiempo UTC?
Yo uso rieles como backend, la fecha de salida predeterminada es 2008-12-29T00: 27: 42-08: 00
Pero después de mi investigación, NSDateFormatter no puede admitirlo, excepto que cambio la fecha a 2008-12-29T00: 27: 42-0800
Aquí está el código que utilicé para analizar la fecha ISO 8601, pero no funciona
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?