NSDateFormatter apagado por una hora

Estoy tratando de formatear una date de un feed RSS:

Lun, 27 Feb 2012 10:33:00 EDT (formatting de la fuente RSS)

A:

Lunes 27 de febrero de 2012 10:33 a.m.

Esto es lo que estoy haciendo en el código:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"EE, d MM yyyy HH:mm:ss zzz"]; NSDate *date = [dateFormat dateFromString:@"Mon, 27 Feb 2012 10:33:00 EDT"]; [dateFormat setDateFormat:@"EE, d MMM yyyy hh:mm a"]; formatedDateLabel.text = [dateFormat stringFromDate:date]; [dateFormat release]; 

Sin embargo, esto siempre produce:

Lunes 27 de febrero de 2012 9:33 a.m.

Tenga en count que mis dispositivos están configurados en EST. He intentado ajustar el formatting de date para que coincida con EDT, pero eso no parece hacer ninguna diferencia.

¿Alguna idea sobre lo que estoy haciendo mal?

No estás haciendo nada malo. La razón por la que esto ocurre es porque la representación interna de EDT y EDT de NSTimezone son idénticas:

 // These objects are the same: [NSTimeZone timeZoneWithAbbreviation:@"EST"]; [NSTimeZone timeZoneWithAbbreviation:@"EDT"]; 

NSDateFormatter dateFromString: es lo suficientemente inteligente como para saber que una date de febrero marcada EDT debería tener una compensación GMT de -4 en lugar de -5, aunque esa no sea una date bien formada. Pero cuando lo usa para mostrar dates, si su zona horaria está establecida en EST o EDT (que trata como la misma cosa), utilizará la zona horaria apropiada en function de si el horario de verano está vigente en ese momento.