2013-05-30 61 views
0

我很抱歉,如果這已被問過,但我做了很多檢查,似乎我無法找到答案。 :(如何的NSString轉換成NSDate的特定格式

我有一個字符串「2013年5月7日五時53分15秒+0000」,我想將其轉換爲一個NSDate的,所以我可以用當前日期和時間進行比較。我就想不通如何做到這一點:(我成功地轉換它,但它改變了字符串的外觀,我希望它是完全2013-05-7 05:53:15 +0000,因爲這是相同的格式我有其他NSDate我很困惑項目

任何及所有的幫助感激

;。)的新目標C.舊VB /年長C來自試圖找出這個東西了上世紀80年代程序員謝謝您的幫助:)。

我的代碼看起來像這樣:

NSDateFormatter *df1 = [[NSDateFormatter alloc] init]; 
// [df1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; 
    [df1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"]; 
    df1.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"EN"]; 
    NSDate *titemdate1 = [df1 dateFromString: itemdate]; 

我有兩個日期。一個是應用程序運行的最後日期,另一個是使用JSON拉下的項目的日期。我想比較兩個日期(它們是如上所述的字符串格式)。當我做一個NSLog的字符串,他們看起來很完美,但是當我轉換爲NSDate比較我有問題。有任何想法嗎?

+2

爲什麼「沒有格式」,這是什麼意思?最簡單的方法是使用NSDateFormatter。 –

+2

(和NSDate的對象不具有「格式」 - 他們是純粹的時間。) –

+0

(我懷疑這是你的困惑使用NSDate的定義方法的兩個NSDate的對象你總是可以比較他們打印的方式無關。 ) –

回答

1

用下面的代碼試試..

-(NSDate*)dateFromJsonString:(NSString*)string 
{ 
    NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init]; 
    [inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"]; 
    NSDate *xExpDate = [inputFormatter dateFromString:string]; 

    return xExpDate; 
} 
0

所有你應該知道,如果你轉換dateString日期和做日期的NSLog,它返回GMT時間,這將是不同的,從你的第一系統時間在大多數情況下。所以如果你以正確的格式獲取字符串,那麼日期格式化器可能工作正常。要檢查這一點,只需將格式化的日期轉換爲字符串並打印輸出。

NSLog(@"formatted date: %@",[df1 stringFromDate:titemdate1]); 

如果這沒有改變任何東西,輸出仍然是錯誤的,請嘗試更改格式化程序的格式。

[df1 setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];