2010-02-09 4 views
1

J'ai un formateur NSDate qui devrait créer un NSDate à partir d'une chaîne et devrait le retourner formated. Le problème est que le résultat de la conversion de String en NSDate est faux, le plus gros problème est que sur iPhone OS 3.1.2 il renvoie null tandis que dans le simulateur il renvoie une date erronée.Pourquoi NSDate Formatter ne peut pas convertir correctement et renvoie null sur l'appareil?

//start formating date 
NSMutableString *rawNewsDate = [NSMutableString stringWithString:@"Wed, 3 Feb 2010 14:47:11 CET"]; 
[rawNewsDate replaceOccurrencesOfString:@" CET" withString:@"" options:0 range:NSMakeRange(0, [rawNewsDate length])]; 

// Convert string to date object 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"EEE, d MMM YYYY HH:mm:ss"]; 
NSDate *date = [dateFormat dateFromString:rawNewsDate]; 
[dateFormat setDateFormat:@"d.M.YYYY | HH:mm"]; 
NSString *formatedDate = [dateFormat stringFromDate:date]; 
NSLog(@"Formated Date %@", formatedDate); 
[dateFormat release]; 

Sur le simulateur dans la console, après l'exécution du code, le NSDate converti de la chaîne est 2009-12-23 14:47:11 0200 et formated un 23.12.2009 | 14h47.

Sur le périphérique de la console, le NSDate converti à partir de la chaîne est null et le format est également null.

Le résultat devrait être 03.02.2010 | 14h47.

Des pointeurs? Merci

Répondre

1

Dans les chaînes de format, remplacez YYYY par yyyy (minuscule). Voyez si cela corrige le résultat du simulateur.

Si cela ne fonctionne toujours pas sur l'appareil, est-il défini sur la région des États-Unis? Sinon, essayez de faire un setLocale sur le formateur à en_US.

Voici une référence pour les modèles de format de date:
http://unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns

+1

yup, et un coup d'oeil à ce http://multinc.com/2009/09/27/iphone-sdk-time-bug-for -international-users/ – phunehehe

+0

merci, cela a fonctionné comme un charme :) l'appareil avait d'autres régions définies, setLocale a fait l'affaire. –

Questions connexes