Как получить все даты выходных из года [суббота и воскресенье], передав определенный год по-быстрому? - PullRequest
0 голосов
/ 06 сентября 2018

Как получить все даты выходных [суббота и воскресенье], передавая определенный год по-быстрому? Например, если я пройду 2018, он вернет [01.06.18]

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете получить количество дней в году, перебирать их с помощью compactMap, проверять, если каждый день в выходных, если положительный возврат, в противном случае возвращается nil:

extension Date{
    var year: Int {
        return Calendar.current.component(.year, from: self)
    }
    var weekendsInSameYear: [Date] {
        return Calendar.current.range(of: .day, in: .year, for: self)?.compactMap {
            guard let date = DateComponents(calendar: .current, year: year, day: $0).date, Calendar.current.isDateInWeekend(date) else {
                return nil
            }
            return date
        } ?? []

    }
}

let dates = Date().weekendsInSameYear
for date in dates {
    print(date.description(with: .current))
}

//  "Saturday, January 6, 2018 at 12:00:00 AM Brasilia Summer Time"
//  "Sunday, January 7, 2018 at 12:00:00 AM Brasilia Summer Time"
//  "..."
//  "Saturday, December 29, 2018 at 12:00:00 AM Brasilia Summer Time"
//  "Sunday, December 30, 2018 at 12:00:00 AM Brasilia Summer Time"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...