Jour de la semaine du premier jour du mois

J'ai besoin d'get le jour de la semaine du premier jour du mois. Par exemple, pour le mois de septembre 2013, le premier jour tombe dimanche.

Au début, obtenez le premier jour du mois en cours (par exemple):

NSDate *today = [NSDate date]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:today]; components.day = 1; NSDate *firstDayOfMonth = [gregorian dateFromComponents:components]; 

Ensuite, utilisez NSDateFormatter pour l'imprimer en tant que jour de la semaine:

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"EEEE"]; NSLog(@"%@", [dateFormatter ssortingngFromDate:firstDayOfMonth]); 

PS se penche également sur les formats de format de date

Voici la solution pour get le nom du jour de la semaine du premier jour du mois en cours

 NSDateComponents *weekdayComps = [[NSDateComponents alloc] init]; weekdayComps = [calendar.currentCalendar components:calendar.unitFlags fromDate:calendar.today]; weekdayComps.day = 1; NSDateFormatter *weekDayFormatter = [[NSDateFormatter alloc]init]; [weekDayFormatter setDateFormat:@"EEEE"]; NSSsortingng *firstweekday = [weekDayFormatter ssortingngFromDate:[calendar.currentCalendar dateFromComponents:weekdayComps]]; NSLog(@"FIRST WEEKDAY: %@", firstweekday); 

Pour l'index de la semaine, utilisez cette

 NSDate *weekDate = [calendar.currentCalendar dateFromComponents:weekdayComps]; NSDateComponents *components = [calendar.currentCalendar components: NSWeekdayCalendarUnit fromDate: weekDate]; NSUInteger weekdayIndex = [components weekday]; NSLog(@"WEEKDAY INDEX %i", weekdayIndex); 

Vous pouvez également incrémenter ou décrémenter le mois si nécessaire.

Selon la sortie dont vous avez besoin, vous pouvez utiliser NSDateFormatter (comme cela a déjà été dit) ou vous pouvez utiliser la class NSDateComponents . NSDateFormatter vous donnera une représentation sous forme de string, NSDateComponents vous donnera des valeurs entières. La méthode en weekday peut faire ce que vous voulez.

 NSDateComponents *components = ...; NSInteger val = [components weekday];