2010-12-11 193 views
3

我想從Twitter API結果轉換爲NSDate對象使用NSDateFormatter字符串。我發現的是,NSDateFormatter只是返回我的機器的當前日期/時間。任何幫助將不勝感激!NSDateFormatter - 從Twitter解析日期JSON API

這裏的字符串的樣子進入我的功能:

週六,2010年12月11日1時35分52秒+0000

而這裏的功能:

+(NSDate*)convertTwitterDateToNSDate:(NSString*)created_at 
{ 
    // Sat, 11 Dec 2010 01:35:52 +0000 
    static NSDateFormatter* df = nil; 

    df = [[NSDateFormatter alloc] init]; 
    [df setTimeStyle:NSDateFormatterFullStyle]; 
    [df setFormatterBehavior:NSDateFormatterBehavior10_4]; 
    [df setDateFormat:@"EEE, d LLL yyyy HH:mm:ss Z"]; 

    NSDate* convertedDate = [df dateFromString:created_at];  
    [df release]; 

    return convertedDate; 
} 

這裏是返回的日期:

2010-12-10 17:58:26 -0800

這恰好是我現在計算機的日期和時間。

* 注意! *在分配DateFormater時將使用autorelease的內存管理更改爲函數中的顯式版本。當在一個巨大的循環中調用這個函數時,我發現它在autorelease時開始失敗(我猜測汽車部分沒有足夠快地釋放),但是改變它以解決問題。

+0

你也可以說調用這個方法,你是如何顯示結果的代碼? – Anna 2010-12-11 03:57:29

+1

您的代碼適用於我。我會檢查你處理返回值的位置。 (雖然你的代碼每次運行時都會泄漏一個NSDateFormatter) – 2010-12-11 07:08:21

+0

謝謝史蒂夫,內存泄漏固定! – 2010-12-11 19:40:08

回答

1

我認爲是對的。因爲原始字符串在+0000時區,結果日期在-0800時區。所以,如果你仔細看着它們,你會發現是同一時間。

當您打印日期如[日期說明]時,它會打印在當地時區,我相信但時間是絕對的。由於NSDate只包含秒,而不包含日曆,而不包含時區信息。

(打印字符串相對於本地時區,但真正的日期是絕對的)

+0

謝謝,我覺得我只是沒有面試的問題:)好東西我是一名程序管理員,而不是開發人員! – 2010-12-11 19:39:19