The error was caused because that date doesn't exist under the Chilean zone (due to DST change).
While NSDateFormatter is correct to return nil because it doesn't exist. It's not feasible to tell the user "The file was created in a time your timezone never experienced".
The solution (that applies to any other zone with DST) is to set a timezone just like the current one without DST.
NSString *dateString = ...; //Assume it is defined
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:locale];
//Date formatting might fail because of Daylight Saving Timezones and the like. So, we force the timezone to one just like it where the date always exist.
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:[[NSTimeZone localTimeZone] secondsFromGMT]]];
NSDate *date = nil;
NSError *error = nil;
[formatter getObjectValue:&date
forString:dateString
range:NULL
error:&error];
Again, this is not technically correct to do, but it is OK to do for display purposes.