Som standard är NSDateFormatter inställt på localTimeZone. Eftersom din dateString inte hade tidszonsinformation, beräknade den tiden till localTimeZone. Om du vet att tidszonen för din dateString är UTC måste du ställa in den på dateFormatter.
NSDate representerar absolut tid, representationen kan variera mellan tidszoner men det är ett unikt värde och det kommer inte att påverkas av sommartid.
-(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;
}