2010-08-12 5 views
4

J'essaye d'utiliser seulement un NSDateFormatter pour formater la représentation de chaîne d'une date/heure à un objet NSDate. Le problème est que je n'arrive pas à comprendre comment autoriser les suffixes ordinaux dans le format.NSDateFormatter NSString w/jour suffixe à NSDdate

permet donc dire que j'ai une chaîne « Mercredi 11 Août 2010 20:00 »

Quelle une ligne NSDate dateFormat dois-je utiliser?

Comme « EEEE, MMM dd'th » yyyy h: mm a » fonctionnerait, mais cela ne fonctionnera que pour les jours ordinaux se terminant en « e », alors que je besoin d'un format unique qui permettra pour le 1er, 2e, 3e, 4e, 5e, etc.

Il semble que cela soit un caractère générique dans la chaîne de format. J'ai essayé quelques choses comme:% *?

+1

Voir cette question: http://stackoverflow.com/questions/1283045/ordinal-month-day-suffix-option-for-nsdateformatter-setdateformat – Wevah

+0

C'est pour l'inverse. NSDate à NSString, j'ai besoin de NSString à NSDate – psy

+0

Généralement, NSDateFormatter est confus si vous essayez d'analyser une date contenant un jour de la semaine. Le mieux est de se déshabiller et d'analyser le reste. –

Répondre

3

Cela n'est apparemment pas possible avec NSDateFormatter.

+1

J'abandonne et remplace manuellement les références de "" st "" "nd" "rd" "th" "avec un espace Caractère '" "' avant de l'envoyer via un format de date.Rend les choses un peu plus difficile, mais c'est vraiment le seul moyen car il n'y a pas de caractère générique ..... – rwyland

-1

Vous voulez utiliser un NSDateFormatter comme ceci:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
[dateFormatter setDateStyle: NSDateFormatterLongStyle]; 
NSDate *date = [dateFormatter dateFromString:dateString]; 
[dateFormatter release]; 

Soit NSDateFormatterLongStyle ou NSDateFormatterFullStyle devraient vous obtenir les résultats que vous recherchez.

+0

Je cherche à passer dans un formateur de chaîne personnalisé, et ne pas utiliser ceux fournis par le SDK. – psy

+1

selon les docs, la définition du style de date n'aide pas - ne peut pas voir les styles qui prennent en charge "1st", "2nd" etc. le style long donne "23 novembre 1937" Il veut "23" – occulus