2009-09-25 8 views
1

J'ai besoin de la date sous forme de chaîne mais pas de l'heure et il faut la localiser.Comment puis-je obtenir la date mais pas l'heure à partir de NSDate

Ainsi, par exemple États-Unis devraient être 25 septembre 2009 mais pour la Nouvelle-Zélande, il serait 25 septembre 2009. Je peux obtenir la date dans une chaîne en spécifiant le format "MMM jj YYYY" mais il n'est pas localisé.

Des idées?

Répondre

7
[NSDateFormatter localizedStringFromDate:[NSDate date] 
           dateStyle:NSDateFormatterMediumStyle 
           timeStyle:0] 
+0

est ce disponible sur l'iPhone? n'apparaît pas dans les documents NSDateFormatter spécifiques à l'iPhone. –

+2

timeStyle doit être défini sur kCFDateFormatterNoStyle. Il arrive à 0 mais vous ne devriez pas coder les constantes quand il y a une constante nommée. – progrmr

3

La clé est d'envoyer setTimeStyle: kCFDateFormatterNoStyle au DateFormatter. Cela règle le DateFormatter pour qu'il ne forme la date et non le temps de sortie:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
[dateFormatter setLocale: [NSLocale currentLocale]];  
[dateFormatter setDateStyle:kCFDateFormatterShortStyle]; // or whichever style... 
[dateFormatter setTimeStyle:kCFDateFormatterNoStyle]; 
NSString* dateString = [dateFormatter stringFromDate: [NSDate date]]; 

Cela me donne le résultat suivant:

12/18/09 
+0

Puis-je obtenir de l'heure sans date de la même manière? Si oui alors ça ne marche pas pour moi. Quand je reçois le temps dans NSDate alors mon objet reste nul – Mashhadi

+0

Ça devrait marcher. Postez votre code avec une nouvelle question si vous ne pouvez pas le faire fonctionner. – progrmr

+0

http://stackoverflow.com/questions/12721553/get-time-from-nsdate-returns-nil/12721934#12721934 – Mashhadi

Questions connexes