我與一個奇怪的情況作鬥爭:相同的代碼在兩個不同的項目中工作不同。這個代碼只是一個空的命令行工具。第二個項目與鏈接的gdata-objectivec-client庫。在使用GData-Objectivec-client時格式化NSDate&NSString的問題
下面是代碼:
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);
在剛剛命令行實用程序的結果是相同
「2011年3月8日10時07分36秒0300」
。
但在鏈接到它GDATA-的ObjectiveC客戶端的項目,結果被改成
「2011年3月8日7時07分36秒+0000」
我不能找到什麼問題,有什麼建議?
檢查'dateFormatter'的'formatterBehavior'屬性可能是值得的,看它是否相同。 – 2011-03-21 08:15:57
我已經檢查過這個屬性,在這兩種情況下它都有0x410的值。 – zkaje 2011-03-21 08:38:04
可能是由於newDate對象是一樣的,問題就在於我的NSLog?可能是它會詢問NSDate的不同描述,如果我確實要求desctiptionWithLocale :,那麼它會給我的位置的文本描述的正確時間,但我不喜歡結果,因爲我只想要相同的字符串,就像它是在輸入中,我希望位置以+ -HHHH表示,但不是在文本 – zkaje 2011-03-21 08:42:20