Http Date to NSDate

Luc*_*arr 7 objective-c nsdate nsdateformatter ios

我有一个字符串取自http响应标题字段"日期"以这种格式:

"Sun, 24 Jun 2012 16:34:51 GMT"
Run Code Online (Sandbox Code Playgroud)

我想要的是在NSDate对象中转换此字符串.对于此范围,我已NSDateFormatter使用各种格式实例化:

[dateFormatter setDateFormat:@"EEE',' dd' 'MMM' 'yyyy HH':'mm':'ss zzz"];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
[dateFormatter setDateFormat:@"EEE',' dd' 'MMM' 'yyyy HH':'mm':'ss 'GMT'"];
Run Code Online (Sandbox Code Playgroud)

但是当我从日期打印字符串时使用:

[dateFormatter dateFromString:date]
Run Code Online (Sandbox Code Playgroud)

我收到:

(null)
Run Code Online (Sandbox Code Playgroud)

我哪里做错了?

Mon*_*olo 8

不确定我理解这个问题,因为你自己的代码似乎对我来说很好:

NSString *dateStr = @"Sun, 24 Jun 2012 16:34:51 GMT";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE',' dd' 'MMM' 'yyyy HH':'mm':'ss zzz"];

NSDate *date = [dateFormatter dateFromString:dateStr];

NSLog(@"Date: %@", date);
Run Code Online (Sandbox Code Playgroud)

这给出了这个输出:

日期:2012-06-24 16:34:51 +0000

除非我误解了你的问题,否则这是正确的结果.

  • 问题是它缺少两行代码:NSLocale*usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; [dateFormatter setLocale:usLocale]; (5认同)
  • @booker 如果您在美国以外的其他国家/地区,则应将“NSDateFormatter”的本地设置为 en_US。 (2认同)