J'essaie de comprendre ce jour (soit le lundi, vendredi ...) à une date donnée (à savoir le 27 juin 2009)Comment trouver quel jour de la semaine pour une date donnée en utilisant Cocoa
Je vous remercie.
J'essaie de comprendre ce jour (soit le lundi, vendredi ...) à une date donnée (à savoir le 27 juin 2009)Comment trouver quel jour de la semaine pour une date donnée en utilisant Cocoa
Je vous remercie.
Utilisez NSCalendar et NSDateComponents. Comme le montre la documentation NSDateComponents:
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:date];
int weekday = [weekdayComponents weekday];
D'où vient "comps"? En outre, techniquement @ThisThib est correct que -weekday renvoie une valeur NSInteger. Cela ne devrait pas poser de problème pour tout calendrier que je connais, mais au nom de la correction et de la portabilité ... ;-) –
Vous pouvez avoir un regard aux classes NSDate et NSCalendar. Par exemple, here et here
Ils fournissent le code suivant:
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =
[gregorian components:(NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:today];
NSInteger day = [weekdayComponents day];
NSInteger weekday = [weekdayComponents weekday];
J'ai fait:
NSDateFormatter* theDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[theDateFormatter setDateFormat:@"EEEE"];
NSString *weekDay = [theDateFormatter stringFromDate:[NSDate date]];
Cela a l'avantage de vous permettre de choisir comment vous comme le jour de la semaine à retourner (en changeant la chaîne de format de la date dans le setDateFormat: appel
Beaucoup plus dans formation à:
Voici ce que je blesse avec, qui fonctionne exactement comme prévu. Il faut une date, modifie la date d'être le premier du mois, et obtient le jours cette date:
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:date];
NSDateComponents *monthDateComponents = [[NSCalendar currentCalendar] components: NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear |
NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate: date];
// build date as start of month
monthDateComponents.year = components.year;
monthDateComponents.month = components.month;
monthDateComponents.day = 1;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
// [gregorian setFirstWeekday:1];
NSDate *builtDate =[gregorian dateFromComponents: monthDateComponents];
// NSDateComponents *weekdayComponents =[gregorian components: NSCalendarUnitWeekday fromDate: builtDate];
NSDateFormatter *df = [NSDateFormatter new];
[df setDateFormat:@"E"];
NSString *firstDay = [df stringFromDate:builtDate];
if([firstDay isEqual:@"Sun"]) // do for the other 6 days as appropriate
return 7;
S'il vous plaît essayer de distinguer la différence entre Objective-C et Cocoa. Il est parfaitement possible d'utiliser l'un sans l'autre, mais dans le cas des dates je suppose que vous parlez de cacao. – dreamlax
Bien qu'ils soient des entités distinctes, il est sans doute plus facile d'utiliser Objective-C sans Cocoa que vice-versa. Même s'ils utilisaient Cocoa de Python ou autre, les appels de classes et de méthodes seraient exactement les mêmes. En outre, la balise "objectif-c" n'est pas aussi active que Java ou C#, et à peu près tout le monde qui regarde cette balise est intéressé par la programmation Mac ou iPhone. –
Avez-vous lu la question non éditée? Il n'a fait aucune référence à Cocoa, d'où l'édition et le commentaire. Je pense qu'il est important de faire la distinction, tout comme les gens devraient avec C++ et STL, C# et .NET, etc – dreamlax