Скажем, я хочу создать дату в «15:00 в пятницу».
Я знаю, что сегодня понедельник (день = 1). Пятница — 6-й день. Я знаю, что час, который я хочу создать, — 15.
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:6];
[comps setMonth:currentDate.month];
[comps setYear:currentDate.year];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];
Думаю, это может сработать в некоторых случаях. Но не в том случае, если пятница в другом месяце или году, чем сегодня. Есть ли надежное решение для этого, или мне нужно вручную учитывать крайние случаи, которые я упомянул?
РЕДАКТИРОВАТЬ: я не знаю день месяца или год предлагаемой даты. Я знаю сегодняшнюю дату. Я знаю только день предполагаемой даты и то, что это следующая дата с этого дня. Итак, в следующую пятницу, начиная с этого момента, в 15:00.
setDay
— это день месяца, а не день недели. Таким образом, установка его на6
— это 6-е число месяца, а не пятница. - person rmaddy   schedule 23.09.2014