将格式为Tue,2013年8月27日22:22:04 EDT的NSString转换为NSDate

时间:2013-08-28 11:46:14

标签: ios nsdate nsdateformatter

我正在尝试使用以下格式转换NSStringTue, 27 Aug 2013 22:22:04 EDTNSDate 但我总是得到nil

这是我的尝试

// This is my pub date in string** 

NSString *pubDate = @"Tue, 27 Aug 2013 22:22:04 EDT";

NSArray *tempArr =[ pubDate componentsSeparatedByString:@" "];
NSMutableArray *tempArrFinal = [NSMutableArray arrayWithArray:tempArr];
[tempArrFinal removeLastObject];
[tempArrFinal removeObjectAtIndex:0];
pubDate = [tempArrFinal componentsJoinedByString:@" "];

在将其传递给日期格式化程序之前,我将NSString转换为格式,如下所示:27 Aug 2013 22:22:04删除字符串的前n个组成部分。我这样做是因为原始格式我得到的结果相同。

我正在尝试将其转换为NSDate

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];

[formatter setDateFormat:@"MMM dd yyyy HH:mm:ss"];
[formatter setDateStyle:NSDateFormatterLongStyle];

articleDate = [formatter dateFromString:pubDate];

1 个答案:

答案 0 :(得分:2)

您必须根据日期格式设置NSDateFormatter

如果您使用此类型的日期27 Aug 2013 22:22:04

,请尝试此操作
NSString *string=@"27 Aug 2013 22:22:04";
NSDateFormatter *df=[[NSDateFormatter alloc]init];
[df setDateFormat:@"dd MMM yyyy HH:mm:ss"];
NSDate *date=[df dateFromString:string];

如果你使用Tue, 27 Aug 2013 22:22:04 EDT这种类型的日期 试试这个

NSString *string=@"Tue, 27 Aug 2013 22:22:04 EDT";
NSDateFormatter *df=[[NSDateFormatter alloc]init];
[df setDateFormat:@"E, dd MMM yyyy HH:mm:ss zz"];
NSDate *date=[df dateFromString:string];