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];