2015-12-28 9 views
0

Наличие двух разных сущностей в coredata с 'ClassDetails' и 'ClassSlots' требует всей даты слота класса из объекта ClassSlots. Имейте несколько слотов класса в объекте ClassSlots, у которых есть дата начала и дата начала класса в сущности ClassDetails. Сценарий похож на то, что во время добавления класса добавление времени только в воскресенье-понедельник-вторник .. формат. Теперь во время получения путаницы, как получить эти дни (в формате даты) между датой начала и датой окончания этого конкретного класса.Как рассчитать всю дату понедельника между двумя датами

Используя этот кусок кода, но не получить ожидаемый результат (dayId, как это - 0 для воскресенья, 1 для понедельника)

NSLog(@"Start date ==>%@ End date ==>%@ dayId ==>%@",startDate,endDate,dayId); 

    NSDateFormatter *dateFormator = [[NSDateFormatter alloc] init]; 
    [dateFormator setDateFormat:@"yyyy-MM-dd"]; 

    NSDateComponents *components = [[NSCalendar currentCalendar] components: NSYearCalendarUnit | NSWeekOfYearCalendarUnit fromDate:[dateFormator dateFromString:startDate]]; 

    NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    [comps setWeekOfYear:[components weekOfYear] + 1]; 
    [comps setWeekday:[components day]]; 
    [comps setYear:[components year]]; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    [calendar setFirstWeekday:[dayId intValue]+1]; 
    NSDate *date = [calendar dateFromComponents:comps]; 

    NSLog(@"date ==> %@",date); 
+0

Что вы получаете в результате? И какой результат вы хотите? – Kex

+0

вся слотовая дата в классе, Ex - класс начался с 1-го декабря 2015 года и заканчивается 31-й декадой 2015 года и имеет почасовой график, а затем возвращает весь понедельник (в формате даты) с 1-го декабря 2015 года до 31-го декабря 2015 года –

+0

Попробуйте использовать этот ответ http://stackoverflow.com/a/33991698/3908884 –

ответ

0

В вашем случае изучают целый месяц от первого до последнего дня - так что вы можете использовать API rangeOfUnit от NSCalendar.

NSDate *aDate; // make this any date in the desired month 
NSInteger numberOfDaysInMonth = [[NSCalendar currentCalendar] 
    rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth 
    forDate:aDate].length; 

Вы можете сделать остальную часть логики самостоятельно, если знаете, какой будний день первый день этого месяца.

NSCalendarUnit units = NSCalendarUnitDay | NSCalendarUnitMonth; 
NSDateComponents *comps = [[NSCalendar currentCalendar] 
    components:units fromDate:aDate]; 
comps.day = 1; 
NSDate *firstDayInMonth = [[NSCalendar currentCalendar] dateFromComponents:comps]; 
comps = [[NSCalendar currentCalendar] 
    components: NSCalendarUnitWeekday fromDate:firstDayInMonth]; 
NSInteger weekdayOfFirstDayInMonth = comps.weekday; 
Смежные вопросы