如何在HTTP上将Last-Modified标头从HTTP响应正确转换为NSDate

sor*_*rin 16 nsdate nsdateformatter ios

我正在寻找一个完全可行的解决方案,一个适用于:

  • 任何iOS区域设置或时区
  • 任何/大多数HTTP服务器
  • Xcode 4.0.2 (看原因)

目前破碎的代码:

 NSString lastModifiedString = @"Mon, 06 Jun 2011 12:47:05 GMT";
 NSDateFormatter *df = [[NSDateFormatter alloc] init];  
 //df.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'";
 df.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss z";
 df.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];  
 df.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];  
 NSDate date = [df dateFromString:lastModifiedString];  
Run Code Online (Sandbox Code Playgroud)

我假设Last-Modified应该使用与HTTP规范中的其他日期字段相同的格式,这意味着使用RFC-1123/RFC-822

资源:

Dav*_*ong 6

唯一不对的是,你在中间NSStringlastModifiedString之间NSDate以及之间都会丢失星号date.一旦你把它们放进去,这段代码对我有用.