2010-09-20 7 views
1

Je le code suivant pour analyser une date de chaîne:date d'analyse fonctionne sur simulateur pas iphone?

NSString * str = @"8/13/2010 1:59:00 PM"; 
NSDateFormatter * dateFormat2 = [[NSDateFormatter alloc] init]; 
[dateFormat2 setDateFormat:@"MM/dd/yyyy h:mm:ss a"]; 
NSDate * orderDate = [dateFormat2 dateFromString:str ]; 

mais ORDERDATE toujours à venir nul, ce que je fais mal? Quelle est la dateFormatString appropriée?

Cela fonctionne très bien dans l'émulateur, mais est nul sur iphone 4 ios 4.0

+1

Je crois que la réponse est couverte ici http://stackoverflow.com/questions/3600748/nsdateformatter-problem-with-weekday-eee/3600924#3600924 – Liam

Répondre

1

en utilisant ce correctif de commentaire de @Liam m'a aidé à résoudre ce problème, je signale juste au cas où son utile à quelqu'un d'autre,

NSDateFormatter * parser = [[NSDateFormatter alloc] init]; 
NSLocale * locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]autorelease]; 
[parser setLocale:locale ]; 
[parser setFormatterBehavior:NSDateFormatterBehavior10_4]; 
[parser setDateFormat:@"M/d/yyyy h:mm:ss a"]; 

NSDate * orderDate = [parser dateFromString:str ]; 

j'ai réalisé ce bug que j'ai trouvé que produit lorsque l'utilisateur iphone définit leur horloge à l'heure militaire de 24 heures,

+0

Changer la chaîne de format en 'H: mm: ss' devrait le rendre compatible avec les heures de 0-23. – highlycaffeinated

+0

En outre, si la valeur date/heure que vous obtenez dépend des paramètres de préférence de l'utilisateur, il est préférable d'utiliser la méthode 'setDateStyle:' au lieu de 'setDateFormat:'. – highlycaffeinated

+0

@highlycaffeinated - Je ne veux pas l'afficher comme 0-23, avez-vous aussi un exemple sur la façon d'utiliser setDateStyle? – slim

0

Le problème n'est pas le format de date, il est que la méthode init est pris en charge sur Mac OS X v10.4 à Mac OS X v10.5 (qui est probablement pourquoi cela fonctionne dans le simulateur). Essayez d'utiliser

initWithDateFormat:allowNaturalLanguage:

à la place. Voir here pour plus d'informations.

+0

@slim Désolé, Je regardais les documents OS X au lieu des docs iOS. init est en effet la méthode à utiliser sur iOS. – highlycaffeinated

Questions connexes