iOS从字符串创建日期 - iOS create date from string

- 此内容更新于:2015-12-13
主题:

我怎么能让这种格式在iOS:“我0000年1月26日07:57:33+0000”?我试了但这返回nil

原文:

How can I make this format in iOS: "Mon Jan 26 07:57:33 +0000 2015"?

I have tried this

NSString *createdAt=@"Mon Jan 26 07:57:33 +0000 2015";
NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
[formatter setDateFormat:@"ddd MMM dd HH:mm:ss zzzz yyyy"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[formatter setTimeZone:gmt];
NSDate *date=[formatter dateFromString:createdAt];

but this returns me nil always

网友:你输入的日期是什么?

(原文:What is your input date?)

网友:开始时你有吗?

(原文:You've got ddd at the start?)

楼主:createdAt包含字符串Mon0000年1月26日07:57:33+0000

(原文:createdAt contains string Mon Jan 26 07:57:33 +0000 2015)

网友:你也不应该设置时区占的日期格式吗?

(原文:Also you shouldn't be setting the timezone as that is accounted for in the date format?)

网友:你得到零因为格式化程序并不对应于你的字符串。

(原文:You get nil because your formatter does not correspond to your string.)

解决方案:
//将字符串转换为日期//星期五,2015年1月23日14:24:24是这是我的例子。你的日期格式化程序应该同你的原始字符串的日期。
原文:

// Convert string to date //Fri, 23 Jan 2015 14:24:24 IST

    NSString *beginString = [currentFields objectForKey:@"pubDate"];
    dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]];
    [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Kiev"]];
    [dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss z"];
    dateFromString = [dateFormat dateFromString:beginString];

This is my example. Your date formatter should be the same as your original string date.