Проблема форматирования NSDate & NSString при использовании GData-Objectivec-client
Я борюсь со странной ситуацией: один и тот же код работает по-разному в двух разных проектах. Один проект - это просто пустая утилита командной строки с этим кодом. Второй проект связан со связанной библиотекой gdata -jectivec-client.
Вот код:
static NSString * const dateFormat = @"MM/dd/yyyy HH:mm:ss Z";
NSString *tmp_string = @"03/08/2011 10:07:36 +0300";
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease] ;
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateFormat: dateFormat ];
NSDate *newDate = [dateFormatter dateFromString: tmp_string];
NSLog(@"dateFromThatString: %@", newDate);
В утилите просто командной строки результат тот же
"08.03.2011 10:07:36 +0300"
,
Но в проекте с привязанным к нему gdata-targetc-client результат меняется на
"08.03.2011 07:07:36 +0000"
Я не могу найти в чем проблема, какие-либо предложения?
2 ответа
Читая об этом предмете, я узнал, что "NSDate не знает о часовых поясах, он всегда хранит даты независимо от часового пояса (как промежуток времени с определенной контрольной даты)", поэтому эти два объекта NSDate представляют два разных Строки в двух разных проектах одинаковы, есть только одна разница в описании объектов NSDate, так что... это не большая проблема для будущей работы, потому что мне нужно это описание только для простой отладки. Я просто не буду использовать метод описания, но [NSFormatted stringFromDate:].
Интересно, как gdata-jectivec-client повлиял на проект, что описание nsdate obj возвращает то же самое время, но в ответ на смещение +0000 gmt.
Но это только для обсуждения.
Похоже, что форматировщик даты имеет разные часовые пояса в каждом случае. Вы можете изменить часовой пояс, используя -[NSDateFormatter setTimeZone:]
,