NSDateComponents
и NSCalendar
имеют возможность совершать n-ый рабочий день месяца с помощью NSWeekdayOrdinalCalendarUnit
с помощью NSCalendarUnit
.Последний день недели месяца с NSDateComponents
Например, 2-го понедельника месяца.
Это замечательно, но, Мне нужно проверить, является ли какой-либо экземпляр NSDate
последним или вторым последним днем недели. Я не могу придумать аккуратный способ сделать это. Я надеюсь, что есть простой трюк, который не требует, чтобы вы проходили все месяцы месяца.
У вас есть идеи?
Так просто, полюбите его! Простое предложение: apple docs говорит о dateByAddingComponents: «Обратите внимание, что некоторые вычисления могут занимать относительно много времени». Я думаю, что для вычислений сложнее, чем добавлять дни (например, годы и месяцы с разной длиной), но вы также можете использовать «dateWithTimeInterval: (86400 * 7) fromDate: dateToTest». Я понятия не имею, какой из них быстрее. –
@ Micazeve Просто добавление 7 раз 24 часов может привести к проблемам при изменении летнего времени и других тонких аномалиях календаря. Причина, по которой правильный метод 'NSCalendar' может занять некоторое время, состоит в том, что он учитывает все эти аномалии. –
О, я не думал о изменениях дневного света ... Спасибо за ваше объяснение! –