我在NSDateFormatter在一個用戶的設備上失敗(在解析一個字符串時返回nil)並且在本地運行時(在模擬器中或在我的設備)。在兩個不同的設備上與NSDateFormatter不一致的行爲
我想排除什麼可能會導致此行爲的差異。我的第一個想法是語言環境,但我試着明確地設置它,以確保始終使用相同的區域設置,但它沒有區別。
下面是代碼:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
[dateFormatter setLocale:locale];
[locale release];
NSDate *theDate = [dateFormatter dateFromString:dateString];
NSLog(@"PARSING DATE %@ AS %@", dateString, theDate);
在發生故障的設備,我得到:
PARSING DATE 2010-11-28T20:30:49-0000 AS (null)
但本地獲得:
PARSING DATE 2010-11-28T20:30:49-0000 AS 2010-11-28 20:30:49 +0000
這是推動我瘋了,我我缺少別的東西?
我運行4.2本地(模擬器)和我的設備(iPhone 4)。失敗的設備是運行4.2.1的3GS。
任何想法將不勝感激!
由於您明確設置了格式字符串,您是否嘗試刪除區域設置代碼? – Costique 2010-12-11 19:24:33
設備是否打開了「24小時制」設置?有關更多信息,請參閱[Apple QA1480](http://developer.apple.com/library/ios/#qa/qa2010/qa1480.html)。 – Anna 2010-12-11 23:05:13
是的,我已經嘗試過,沒有像上面那樣設置區域設置。 – 2010-12-12 00:17:59