По подразбиране NSDateFormatter е настроен на localTimeZone. Тъй като вашият dateString не е имал информация за часовата зона, той изчислява времето за localTimeZone. Ако знаете, че часовата зона на вашия dateString е UTC, тогава трябва да го зададете на dateFormatter.
NSDate представлява абсолютно време, представянето може да варира спрямо часовите зони, но е уникална стойност и няма да бъде повлияна от лятното часово време.
-(NSDate *)formatDateWithString:(NSString *)dateString{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate* date = [dateFormatter dateFromString:dateString];
NSLog(@"Formatted Timestamp: %@ - Original Timestamp: %@", date,dateString);
return date;
}