如何正确地将HTTP响应中的Last-Modified标头转换为iOS上的NSDate

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

  • 任何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]; 

我认为Last-Modified应该使用与HTTP规范中的其他date字段相同的格式,即使用RFC-1123 / RFC-822

资源:

  • http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html HTTP 1.1
  • http://developer.apple.com/library/ios/#qa/qa1480/_index.html

唯一错误的是,你在NSStringlastModifiedString之间以及NSDatedate之间缺less星号。 一旦你把这些,这个代码为我工作。