Je rencontre un léger problème avec NSDateFormatter qui échoue sur le périphérique d'un utilisateur (renvoyant zéro lors de l'analyse d'une chaîne) et fonctionnant parfaitement lorsque je l'exécute localement (dans le simulateur ou sur mon appareil). J'essaie d'exclure ce qui pourrait causer une différence dans ce comportement. Ma première pensée a été la locale, mais j'ai essayé de la définir explicitement pour s'assurer que les mêmes paramètres locaux sont toujours utilisés, mais cela ne fait aucune différence.Comportement incohérent avec NSDateFormatter sur deux périphériques différents
Voici le code:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
[dateFormatter setLocale:locale];
[locale release];
NSDate *theDate = [dateFormatter dateFromString:dateString];
NSLog(@"PARSING DATE %@ AS %@", dateString, theDate);
Sur l'appareil défaillant, je reçois:
PARSING DATE 2010-11-28T20:30:49-0000 AS (null)
Mais localement je reçois:
PARSING DATE 2010-11-28T20:30:49-0000 AS 2010-11-28 20:30:49 +0000
Cela me rend fou, je suis Il me manque quelque chose d'autre? Je cours en local 4,2 (simulateur) et sur mon appareil (un iPhone 4). Le périphérique défaillant est un 3GS fonctionnant 4.2.1.
Toutes les idées seraient grandement appréciées!
Puisque vous définissez explicitement la chaîne de format, avez-vous essayé de supprimer le code de paramètres régionaux? – Costique
Le paramètre "24 heures" est-il activé sur l'appareil? Voir [Apple QA1480] (http://developer.apple.com/library/ios/#qa/qa2010/qa1480.html) pour plus d'informations. – Anna
Oui, j'ai essayé ceci sans que les paramètres régionaux soient définis comme ci-dessus. –