Ios Nsdateformatter+;时区问题

Ios Nsdateformatter+;时区问题,ios,objective-c,cocoa-touch,nsdate,nsdateformatter,Ios,Objective C,Cocoa Touch,Nsdate,Nsdateformatter,我正在尝试解析这个日期时间戳 开始字符串: 2013年9月11日星期三08:51:41 EEST 这个问题只有 伊斯特 ,我试过z或zzz或V,什么都没发生。日期格式化程序始终为空 当我从绳子上剪下来的时候,一切都很顺利 有谁能建议,如何解决这个问题 谢谢 更新: dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_EN

我正在尝试解析这个日期时间戳 开始字符串:

2013年9月11日星期三08:51:41 EEST

这个问题只有

伊斯特

,我试过z或zzz或V,什么都没发生。日期格式化程序始终为空

当我从绳子上剪下来的时候,一切都很顺利

有谁能建议,如何解决这个问题

谢谢

更新:

dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_EN_POSIX"]];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EEST"]];
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss V"];
dateFromString = [dateFormat dateFromString:beginString];
请尝试以下方法:

NSString *beginString = @"Wed, 11 Sep 2013 08:51:41 EEST";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en-GB"]];
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
NSDate *dateFromString = [dateFormat dateFromString:beginString];

试试这个:

NSString *beginString = @"Wed, 11 Sep 2013 08:51:41 EEST";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en-GB"]];
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
NSDate *dateFromString = [dateFormat dateFromString:beginString];

解决此问题的方法是将区域设置更改为
en_GB
,日期格式化程序将能够正确解析日期字符串

以下是苹果开发者bug报告团队对以下问题的解释:

这是iOS 5中的有意更改。问题在于:对于由z(=zzz)或v(=vvv)指定的短格式,可能存在很多歧义。例如,“东部时间”的“ET”可以应用于许多不同地区的不同时区。为了提高格式和解析的可靠性,只有在为区域设置了“cu”(常用)标志的情况下,才会在区域设置中使用短格式。否则,仅使用长格式(用于格式设置和解析)。这是开源CLDR 2.0/ICU 4.8的一个变化,它是iOS 5中ICU的基础,反过来又是NSDateFormatter行为的基础

对于“en”地区(“‘en_-US’”),cu旗设置在元地带,如阿拉斯加、美洲中部、美洲东部、美洲山脉、美洲太平洋、大西洋、夏威夷阿留申和格林威治标准时间。不设置在欧洲中部

但是,对于“en_GB”地区,cu标志设置为Europe_Central

因此,为短时区样式“z”或“zzz”和区域设置“en”或“en_-US”设置的格式化程序将不会解析“CEST”或“CET”,但如果区域设置改为“en_-GB”,它将解析这些。所有人都将解析“GMT”样式

如果格式化程序设置为长时区样式“zzzz”,且区域设置为“en”、“en_-US”或“en_-GB”中的任意一个,则将解析以下任意内容,因为它们是明确的:

“太平洋昼间”“中欧夏季”“中欧时间”


解决此问题的方法是将区域设置更改为
en_GB
,日期格式化程序将能够正确解析日期字符串

以下是苹果开发者bug报告团队对以下问题的解释:

这是iOS 5中的有意更改。问题在于:对于z(=zzz)或v(=vvv)指定的短格式,可能存在很多歧义。例如,“东部时间”的“ET”可能适用于许多不同地区的不同时区。为了提高格式化和解析的可靠性,只有在为区域设置了“cu”(常用)标志的情况下,才会在区域设置中使用缩写形式。否则,只使用长格式(用于格式化和解析)。这是开源CLDR 2.0/ICU 4.8的一个变化,它是iOS 5中ICU的基础,反过来又是NSDateFormatter行为的基础

对于“en”地区(“‘en_-US’”),cu旗设置在元地带,如阿拉斯加、美洲中部、美洲东部、美洲山脉、美洲太平洋、大西洋、夏威夷阿留申和格林威治标准时间。不设置在欧洲中部

但是,对于“en_GB”地区,cu标志设置为Europe_Central

因此,为短时区样式“z”或“zzz”和区域设置“en”或“en_-US”设置的格式化程序将不会解析“CEST”或“CET”,但如果区域设置改为“en_-GB”,它将解析这些。“GMT”样式将被所有人解析

如果格式化程序设置为长时区样式“zzzz”,且区域设置为“en”、“en_-US”或“en_-GB”中的任意一个,则将解析以下任意内容,因为它们是明确的:

“太平洋昼间”“中欧夏季”“中欧时间”


给我们完整的答案format@vikingosegundo请查看更新并向我们提供您的完整信息format@vikingosegundo请看更新哦不,这是一个错误:(谢谢你的答案工作正常。谢谢很多哦不,这是一个错误:(谢谢你的答案工作正常。非常感谢