2013-03-27 38 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];