Ios NSDateFormatter:如何将“Sat,2016年12月17日18:56:08+0100(GMT+01:00)”转换为日期?

Ios NSDateFormatter:如何将“Sat,2016年12月17日18:56:08+0100(GMT+01:00)”转换为日期?,ios,objective-c,nsdateformatter,Ios,Objective C,Nsdateformatter,我有以下字符串Sat,2016年12月17日18:56:08+0100 GMT+01:00“到目前为止 使现代化 我移除了字符串的最后一部分。然后我有以下字符串:Sat,2016年12月17日18:56:08+0100 这是我的代码: _emailDateFormatter = [[NSDateFormatter alloc] init]; [_emailDateFormatter setDateFormat:NSLocalizedString(@"EEE, dd MMM yyyy HH:mm:

我有以下字符串Sat,2016年12月17日18:56:08+0100 GMT+01:00“到目前为止

使现代化 我移除了字符串的最后一部分。然后我有以下字符串:Sat,2016年12月17日18:56:08+0100

这是我的代码:

_emailDateFormatter = [[NSDateFormatter alloc] init];
[_emailDateFormatter setDateFormat:NSLocalizedString(@"EEE, dd MMM yyyy HH:mm:ss Z", nil)];
NSDate* date = [[ParlaMobileUtils sharedInstance].emailDateFormatter dateFromString:@"Sat, 17 Dec 2016 18:56:08 +0100"];
NSString* string_date = [[ParlaMobileUtils sharedInstance].dateFormatter stringFromDate:date];

但是NSDate总是为零。

这就是我要找的解析器

_emailDateFormatter = [[NSDateFormatter alloc] init];
[_emailDateFormatter setDateFormat:NSLocalizedString(@"EEE, dd MMM yyyy HH:mm:ss Z", nil)];
[_emailDateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[_emailDateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];

问:Z是否与+0100 GMT+01:00匹配?答:不。@mmaddy我知道它的wierd,但它适用于python和Java……但实际的格式是什么?第一个+0100是否承诺是GMT的偏移量,不带冒号,还是可能是其他形式,如CET?它可能是可解析的,但前提是你知道规则的实际内容。就我个人而言,我只是把它去掉了至于你信任的部分,就像@vadian建议的那样。@RobNapier,那么我必须手动到结果日期+-小时?我不理解这个问题。时区是格式。你只需要选择你真正信任的重复时区的一部分。我的问题是这个格式实际上在说什么。这将影响格式配置您使用的语法。此外,例如,Dec是否承诺使用英语,或者它是否本地化?如果不知道这一点,您将无法知道如何配置解析器。没有理由设置格式化程序的时区,因为时区来自您正在解析的字符串。