Создание NSDate в заданное время

Скажем, я хочу создать дату в «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.


person soleil    schedule 22.09.2014    source источник
comment
К сведению: понедельник — это день 2, а не 1. И setDay — это день месяца, а не день недели. Таким образом, установка его на 6 — это 6-е число месяца, а не пятница.   -  person rmaddy    schedule 23.09.2014


Ответы (1)


Я не уверен, что полностью понимаю, что вам нужно, но вы можете создать "строковую дату" и преобразовать ее в NSDate:

NSString *dateFormat  @"MM/dd/yyyy hh:mm a";
NSString *myDateString = @"09/22/2014 16:30 pm";
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:dateFormat];
preselectedDate = [df dateFromString: myDateString];
person Marcelo Ribeiro    schedule 22.09.2014
comment
Смотрите мой РЕДАКТИРОВАТЬ. Я не знаю, что это 22 сентября 2014 года. Я только знаю, что это следующая пятница в 3:00. Пятница в 3:00 может быть в следующем месяце или году, насколько я знаю. - person soleil; 23.09.2014
comment
Понятно. В таком случае, может быть, это то, что вам нужно? stackoverflow.com/ вопросы/12829705/ - person Marcelo Ribeiro; 23.09.2014