2010-10-01 3 views
0

Initialement, je pensais que l'utilisation de ce codeEst-ce vendredi avec le format de date "c" retourné comme 5 ou 6?

 
+ (NSString *)getDayOfTheWeek:(NSDate *)date format:(NSString*)format 
{ 
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
dateFormatter.dateFormat = format; 
NSString *formattedDateString = [dateFormatter stringFromDate:date]; 
NSLog(@"Des pico je: %@",formattedDateString); 
return formattedDateString; 
} 
NSDate *now = [NSDate date]; 
NSString *today = [self getDayOfTheWeek:now format:@"c"] 

doit retourner une chaîne avec un numéro pour chaque jour, mais il obtient des résultats différents pour les différents paramètres de format régional. (Mon = 1 ou Sun = 1) et peut-être quelques variations. je ne sais pas Alors, existe-t-il un moyen commun d'obtenir cette solution génériquement pour tous les paramètres de type de date de région sur iPhone facilement?

Répondre

1

Le "c" est le jour local de la semaine. Stand-alone signifie qu'il est destiné à être utilisé sans autre contexte de date (par opposition à "e"). Et le jour local de la semaine dépend de la localisation, c'est-à-dire du jour où le lieu dit que c'est le premier jour de la semaine. Donc, le vendredi peut être 5 ou 6, selon les paramètres régionaux.

Pour savoir quel jour est le premier jour de la semaine, vous pouvez utiliser [[NSCalendar currentCalendar] firstWeekday].

Mais si vous voulez juste une chaîne avec le nom du jour d'aujourd'hui, comme dans "lundi", "mardi", etc., vous pouvez utiliser NSString *today = [self getDayOfTheWeek:now format:@"cccc"];.

+0

Belle touche, mais peut-être que je n'ai pas posé ma question directement. Le résultat de la solution devrait être une constante selon laquelle je peux dire "OK aujourd'hui c'est vendredi" ou n'importe quel jour. Quand j'utilise "cccc", j'obtiens définitivement une chaîne qui dit le nom du jour dans la semaine mais dans une locale différente j'obtiens une chaîne différente et je ne peux pas l'utiliser pour déterminer quel jour de la semaine est aujourd'hui. Je veux utiliser cette valeur pour compter l'action de Timer. – Vanya

+0

OK, j'ai essayé la solution avec firstWeekday et ça marche pour moi ... dans les paramètres américains, en obtenant 1 en Europe en obtenant 2..hope il n'y en a pas d'autre. : o) Merci – Vanya