Проблема форматирования 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:],

Другие вопросы по тегам