我的NSDateFormatter仅适用于iPhone模拟器

Man*_*ler 2 iphone cocoa date objective-c

我使用的NSDateFormatter在模拟器中运行良好,但是当我在iPhone中运行它时,我得到一个零.我将日期硬编码以确定格式,但无论如何它都会失败.

NSString *strPubDate = @"Fri, 8 May 2009 08:08:35 GMT";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss Z"];

NSDate *myDate = [dateFormatter dateFromString:strPubDate];
Run Code Online (Sandbox Code Playgroud)

我尝试在iPhone上使用不同的区域设置,语言等.什么出了什么问题?

Man*_*ler 9

此代码似乎对"GMT"标记正常工作.

NSString *strPubDate = @"Fri, 8 May 2009 08:08:35 GMT";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss zzzz"];
NSDate *myDate = [dateFormatter dateFromString:strPubDate];
Run Code Online (Sandbox Code Playgroud)

RFC822日期和时间规范使用一些 "区域"标签,我找到了正确的符号来解析iPhone的NSTateFormatter的"GMT"标签格式字符串

  • z~zzzz :(特定GMT时区缩写)
  • zzzz :(特定GMT时区名称)
  • Z:+0000(RFC 822时区

感谢你的帮助!