18 votes

Comment convertir correctement l'en-tête Last-Modified d'une réponse HTTP en NSDate sous iOS ?

Je suis à la recherche d'une solution entièrement fonctionnelle, qui fonctionne avec :

  • toute locale ou fuseau horaire iOS
  • tous/la plupart des serveurs HTTP
  • Xcode 4.0.2 (voir pourquoi)

Code cassé actuel :

 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];  

J'ai supposé que Last-Modified est censé utiliser le même format que les autres champs de date dans la spécification HTTP, c'est-à-dire utiliser RFC-1123 / RFC-822.

Ressources :

7voto

Dave DeLong Points 156978

La seule chose qui ne va pas, c'est qu'il manque des astérisques entre les deux. NSString y lastModifiedString et aussi entre NSDate y date . Une fois que vous les avez insérés, ce code fonctionne pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X