Приведенный ниже код вычисляет первый вторник данная комбинация месяца/года. Это написано в MacRuby, потому что это то, с чем я только что пробовал, но у вас не должно быть никаких проблем, чтобы преобразовать его в правильный Objective-C, это просто другой синтаксис (я люблю MacRuby для быстрого поиска идеи):
dc = NSDateComponents.alloc.init
# Set month to April 2010
dc.setYear 2010
dc.setMonth 4
dc.setWeekday 3 # 1 = Sunday, 2 = Monday, ...
dc.setWeekdayOrdinal 1 # We want the first weekday of the month
cal = NSCalendar.alloc.initWithCalendarIdentifier NSGregorianCalendar
date = cal.dateFromComponents dc
date.description # => "2010-04-06 00:00:00 +0200"
Я оставляю это для вас, чтобы определить «следующий первый вторник» с определенной даты: сначала выполните расчет за месяц текущей даты, и если результат в прошлом, сделайте это снова в следующем месяце. Используйте -[NSCalendar components:fromDate:]
, чтобы получить комбинацию месяца/дня данного NSDate.
просто фантастически! –