2011-07-18 81 views
2

我從我的應用程序中獲得以下日期格式。根據時區創建NSDate對象

07/18/2011/04/45/EDT 

我對「07/18/2011/04/45」和「EDT」的子字符串。

使用下面的代碼我寫了一個日期。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"MM/dd/yyyy/HH/mm"]; 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EDT"]]; 

    NSDate *currentServerDate = [dateFormatter dateFromString:formattedDateString]; 
    NSLog(@"currentServerDate %@",currentServerDate); 

然而,當我打印的NSDate(使用上述formattter創建)將其打印爲「2011-07-18 14點15分00秒0530」,其中0530是我的時區。我需要撰寫與EDT時區相關的信息。我怎麼做?

謝謝

+0

請出示在其中創建的日期代碼,然後打印出來。 – JeremyP

+0

確定用這個更新了帖子。 – Dilshan

回答

3

我想的時區可能不是你認爲它是。嘗試記錄由timeZoneWithAbbreviation:返回的時區並查看它告訴您的內容。另外,查看我鏈接到的文檔說明:

一般而言,除了獨特的實例(如「UTC」或「GMT」)之外,您不鼓勵使用縮寫。時區縮寫沒有標準,所以給定的縮寫,可以有多種含義,例如,「EST」是指東部時間同時在美國和澳大利亞

+0

謝謝傑里米似乎是這樣的問題。投票。謝謝。 – Dilshan

0

默認情況下NSDatedescription方法顯示在GTM日期與您的系統的區域設置偏移。如果你想普林NSDate使用NSLog使用下列之一:

NSLog(@"date = %@", [date descriptionWithLocale:some_other_locale]) 
NSDateFormatter *formatter = ... 
NSLog(@"date = %@", [formatter stringFromDate:date]);