2010-04-09 7 views
2

i essayer simple à reformater une date:NSDateFormatter ne fonctionne que sur simulateur?

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
NSDate *date = [[NSData alloc] init]; 
//Mon, 05 Apr 2010 14:27:48 -0700 
[formatter setDateFormat:@"E, dd MMM yyyy HH:mm:ss Z"]; 
date = [formatter dateFromString:self.currentItemValue];   

[formatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 
self.currentItem.pubDate = [formatter stringFromDate:date]; 
[formatter release]; 

Il fonctionne sur le simulateur, mais sur l'appareil que je reçois seulement (null).

Merci pour votre aide!

Quelques autres tests:

NSString *string = @"Fri, 12 Dec 2008 18:45:15 -0800"; 
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss Z"]; 
NSDate *date = [dateFormatter dateFromString:string]; 
[dateFormatter setDateStyle:NSDateFormatterLongStyle]; 
//here i got (null) on the device but it works on simulator... 
NSLog(@"date %@", [dateFormatter stringFromDate:date]); 
+1

Dans quelle région le périphérique est-il défini? – DyingCactus

+0

J'essaie quelque chose d'autre .. J'ai édité ma question ... – phx

+4

Sur l'appareil, sous Paramètres, Général, International, à quoi est défini le format de région? S'il ne s'agit pas d'une région en anglais, vous devez utiliser la méthode setLocale dans le formateur de date et la définir sur en_US pour pouvoir analyser les noms des jours et des mois en anglais dans vos chaînes d'entrée. Voir http://stackoverflow.com/questions/1559182/how-do-you-interpret-dates-with-nsdateformatter/1559284#1559284 par exemple. – DyingCactus

Répondre

6

DyingCactus avait raison!

[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease]]; 

résout mon problème .... Merci!

+0

[dateFormatter setLocale: [NSLocale localeWithLocaleIdentifier: @ "en_GB"]]; –

Questions connexes