2011-05-29 66 views
2

我想從NSString轉換爲NSDate使用getObjectValue:forString:range:error:。該函數返回成功並且沒有錯誤,但返回的日期不正確。NSDateFormatter - getObjectValue:forString:範圍:錯誤:返回不正確的日期

具體而言,我將@"1989-12-31T00:00:00+00:00"傳遞給下面的函數,返回的日期是1970-01-01 00:00:000 +0000。有什麼想法嗎?

+ (NSDate *) convertStringToDate:(NSString *) dateString 
{ 
    NSDate* date = nil; 
    NSError* error = nil; 
    NSRange range = NSMakeRange(0, [dateString length]); 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
    BOOL success = [dateFormatter getObjectValue:&date forString:dateString range:&range error:&error]; 
    [dateFormatter release]; 

    return success ? date : nil; 
} 

在此先感謝。

回答

0
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:locale]; 
[dateFormatter setLocale:usLocale]; 
[usLocale release]; 
[dateFormatter setDateFormat:@"EEE, dd MMMM yyyy HH:mm:ss Z"]; 
NSDate *date = [dateFormatter dateFromString:dateString]; 

注:

  • 獲取語言環境NSLocale初始化從你得到這個日期,如RSS飼料或類似的來源。
  • setDateFormate:調整爲源的格式。
+0

感謝您的回覆。這個解決方案的問題是(1)我不能保證日期的格式(所以我相信我必須使用getObjectValue:forString:range:error :)。 (2)在問題中顯示的示例中,如果我想明確設置日期格式,則必須刪除dateString中的最後一個「:」。 NSDateFormat似乎並不期望最後的「:」。這可能是一個錯誤。 – 2011-05-29 14:46:36

+0

@Tolu Fapohunda關於2.我認爲有修飾符的組合允許這樣做。文檔並不是非常簡單,所以只需要很少的實驗。 – TheBlack 2011-05-29 21:03:39

相關問題