Objective-C - NSTimeZone 2 часа неправильно? - PullRequest
0 голосов
/ 23 июля 2011

Я использую следующий код для установки часового пояса в Стокгольм, Европа.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Stockholm"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];

NSDate *webUpdateDate = [dateFormatter dateFromString:@"2011-07-22 22:10"]; 
// Outputs "2011-07-22 20:10 +0000"

Кто-нибудь знает почему?

1 Ответ

3 голосов
/ 23 июля 2011

Я предполагаю, что вы проверяете дату, используя NSLog.Объект NSDate представляет абсолютное время - он не имеет понятия о часовом поясе, поэтому, когда его запрашивают description, он отображается так, как если бы это было время в GMT.Если вы хотите, чтобы абсолютное время было представлено для часового пояса Стокгольма, вам нужно снова использовать форматер даты:

NSLog(@"%@", [dateFormatter stringFromDate:webUpdateDate]);

Поскольку дата была изначально создана с помощью форматера, для которого уже установлен часовой пояс СтокгольмЯ считаю, что это даст вам ту же строку, которую вы использовали для ввода: @"2011-07-22 22:10".

...