2013-03-27 63 views
-3

在我的iOS應用程序中,我試圖將字符串格式的日期轉換爲NSDate。我首先把字符串放在正確的格式中,但是當把它改成NSDate時,我得到了不同的輸出日期。在下面的代碼中,我放了兩個NSLogs,它們顯示字符串與日期格式匹配,所以我迷失了爲什麼輸出不同。NSString NSDate錯誤的結果

NSString * list = @"Sun, 24 Mar 2013 21:08:02 +0000"; 
NSArray *listItems = [list componentsSeparatedByString:@", "]; 
//24 Mar 2013 21:08:02 +0000 

NSArray *listItems1 = [[listItems objectAtIndex:1] componentsSeparatedByString:@" "]; 
NSString *timeSubString = [[listItems1 objectAtIndex:3] substringWithRange:NSMakeRange(0,5)]; 
NSString * newConcat = [NSString stringWithFormat:@"%@-%@-%@ %@",[listItems1 objectAtIndex:0],[listItems1 objectAtIndex:1],[listItems1 objectAtIndex:2], timeSubString]; 
NSLog(@"***DATE STRING***: %@",newConcat); 
//***DATE STRING***: 24-Mar-2013 21:08 

NSDateFormatter* fmt = [NSDateFormatter new]; 
[fmt setDateFormat:@"dd-MMM-YYYY HH:mm"]; 
NSDate* date = [fmt dateFromString:newConcat]; 
NSLog(@"***OUTPUT DATE***: %@",date); 
//***OUTPUT DATE***: 2013-01-06 02:08:00 +0000 
NSLog(@"***DATE STRING***: %@", [fmt stringFromDate:date]); 
//***DATE STRING***: 05-Jan-2013 21:08 
+0

如果妳讀我的代碼ü會看到:的NSLog(@ 「***日期字符串***:%@」,[FMT stringFromDate:日期]); – BDGapps 2013-03-27 19:06:54

+0

有很多現存的問題處理日期格式問題。請先看看那些。 – rmaddy 2013-03-27 19:07:07

+0

我已經和我一直看到人們不會在最後格式化日期。如果你看我已經格式化它,它仍然出錯。 – BDGapps 2013-03-27 19:08:22

回答

2

你可以做同樣的這個

NSString *dateString = @"Sun, 24 Mar 2013 21:08:02 +0000"; 
NSDateFormatter *dateFormatter = [NSDateFormatter new]; 
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[dateFormatter setLocale:enUSPOSIXLocale]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"]; 

NSDate *date = [dateFormatter dateFromString:dateString]; 
[dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm"]; 

NSString *newDateString = [dateFormatter stringFromDate:date];