Чтобы рассчитать следующую четвертую пятницу месяца, вам нужна комбинация правых DateComponents
и Calendar
.
// The 4th Friday at noon
let payDayComps = DateComponents(hour: 12, weekday: 6, weekdayOrdinal: 4)
// Given the current date, calculate the next 4th Friday at noon
let nextPayDay = Calendar.current.nextDate(after: Date(), matching: payDayComps, matchingPolicy: .nextTime)
. Для этого вам не нужна прошедшая контрольная датаесли ваша цель - получить следующую 4-ую пятницу на основе сегодняшней даты.Измените значение параметра after
, если вам нужно рассчитать 4-ую пятницу на основе какой-либо другой конкретной даты.
Если это будет выполнено в 4-ую пятницу месяца, тогда будет возвращена сегодняшняя дата, если она была выполнена раньшеполдень, и он вернется в четвертую пятницу следующего месяца, если будет работать после полудня.Измените значение часа в payDayComps
, если хотите получить другие результаты (например, 0
для полуночи).
Чтобы рассчитать количество дней до следующего платежного дня, вы можете сделать:
let daysToPayDay = Calendar.current.dateComponents([.day], from: Date(), to: nextPayDay).day!