Так что это не будет иметь прямой ответ и будет предполагать, что ваш формат строки будет таким же.То, что мы собираемся извлечь часть часового пояса (последние 5 символов), а затем рассчитать, сколько секунд мы отключены от GMT.NSTimeZone
имеет удобный метод timeZoneForSecondsFromGMT:
, который поможет нам получить то, что нам нужно.Это то, что вам нужно добавить к коду в вопросе.
NSString * zoneString = [stringDate substringFromIndex:([stringDate length] - 5)];
NSTimeInterval timeInterval = [[zoneString substringToIndex:3] intValue] * 3600;
timeInterval += [[zoneString substringFromIndex:3] intValue] * 60;
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:timeInterval]];
[formatter setDateFormat:@"yyyy'-'MM'-'dd' 'HH':'mm':'ss ZZZ"];
NSLog(@"%@", [formatter stringFromDate:dateFromString]);
Надеюсь, это поможет вам.Если вы уже нашли лучший ответ, сообщите нам.
Оригинальный ответ
Одна вещь о NSDate
заключается в том, что возвращаемое время всегда в GMT.Вы не можете это изменить.Вам придется использовать NSDateFormatter
, чтобы напечатать его правильноПримерно так:
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"PST"]];
[formatter setTimeStyle:NSDateFormatterFullStyle];
[formatter setDateStyle:NSDateFormatterFullStyle];
NSLog(@"%@", [formatter stringFromDate:[NSDate date]]);
Так что установка часового пояса для форматера, который делает dateForString:
, не поможет.Вам нужно будет создать новый, если вы хотите использовать их с другим часовым поясом.