2010-11-15 11 views
3

HI,Comment afficher la date comme "15 Novembre 2010" dans iPhone SDK?

Je dois afficher la date du 15 novembre 2010 dans le SDK iPhone.

Comment faire cela?

Merci!

+1

En fait, presque certainement vous ne le faites pas. Pour l'affichage des dates, vous devriez vraiment utiliser NSDateFormatters avec des styles de date courte, moyenne ou longue. De cette façon, l'utilisateur contrôle la date et fonctionne correctement pour les paramètres d'internationalisation. – JeremyP

Répondre

1

Vous pouvez utiliser une date Formatter comme expliqué dans this post:

// Given some NSDate* date 
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease]; 
[formatter setDateFormat:@"dd MMM yyyy"]; 
NSString* formattedDate = [formatter stringFromDate:date]; 

Je crois que vous pouvez tout simplement mettre « e » à la fin de la commande dd dans la chaîne de format. comme ceci:

@"ddth MMM yyy 

mais je n'ai pas mon Mac en face de moi pour le tester. Si cela ne fonctionne pas, vous pouvez essayer quelque chose comme ceci:

[formatter setDateFormat:@"dd"]; 
NSString* day = [formatter stringFromDate:date]; 
[formatter setDateFormat:@"MMM yyyy"]; 
NSString* monthAndYear = [formatter stringFromDate:date]; 
NSString* date = [NSString stringWithFormat:@"%@th %@", day, monthAndYear]; 
+1

Vraisemblablement, vous voulez utiliser "st", "nd", ou "rd" au lieu de "th" selon le nombre (et bien sûr cela ne fonctionne que pour l'anglais et ne se localise pas facilement dans d'autres langues). –

+0

vous pouvez alors changer le "th" en une variable et faire une méthode qui prend la variable du jour comme un paramètre et retourne "th", "st", etc définissez la nouvelle variable à cela et nous sommes bons. Cependant, je pense que c'est ** beaucoup trop de travail pour afficher une chaîne et je l'afficherais simplement "15 novembre 2010" avec "@" jj MMM, yyyy "' à la place. :) – Joel

+0

Oui, je suis d'accord "15 Novembre 2010" serait bien. Merci pour l'aide rapide. – meetpd

1

Je sais que je réponds à quelque chose de vieux; mais j'ai fait ce qui suit.

@implementation myClass 
    + (NSString *) dayOfTheMonthToday 
     { 
     NSDateFormatter *DayFormatter=[[NSDateFormatter alloc] init]; 
     [DayFormatter setDateFormat:@"dd"]; 
     NSString *dayString = [DayFormatter stringFromDate:[NSDate date]]; 
      //yes, I know I could combined these two lines - I just don't like all that nesting 
     NSString *dayStringwithsuffix = [myClass buildRankString:[NSNumber numberWithInt:[dayString integerValue]]]; 

     NSLog (@"Today is the %@ day of the month", dayStringwithsuffix); 
    } 

+ (NSString *)buildRankString:(NSNumber *)rank 
{ 
    NSString *suffix = nil; 
    int rankInt = [rank intValue]; 
    int ones = rankInt % 10; 
    int tens = floor(rankInt/10); 
    tens = tens % 10; 
    if (tens == 1) { 
     suffix = @"th"; 
    } else { 
     switch (ones) { 
      case 1 : suffix = @"st"; break; 
      case 2 : suffix = @"nd"; break; 
      case 3 : suffix = @"rd"; break; 
      default : suffix = @"th"; 
     } 
    } 
    NSString *rankString = [NSString stringWithFormat:@"%@%@", rank, suffix]; 
    return rankString; 
} 
@end 

Je saisirent la méthode de classe précédente de cette réponse: NSNumberFormatter and 'th' 'st' 'nd' 'rd' (ordinal) number endings