获取一个月内的工作日

Isu*_*uru 2 nsdate weekday weekend ios swift

我正在尝试获取给定月份内的日期。

我的计划是

  1. 获取给定月份的开始和结束日期。
  2. 获取该范围内的所有日期。
  3. 遍历它们并使用该isDateInWeekend方法消除周末内的日期。

其余日期为工作日。

所以我创建了两个NSDate扩展方法来获取月份的开始和结束日期。

extension NSDate {
    var startOfMonth: NSDate {
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components([.Year, .Month], fromDate: self)
        return calendar.dateFromComponents(components)!
    }

    var endOfMonth: NSDate {
        let calendar = NSCalendar.currentCalendar()
        let components = NSDateComponents()
        components.month = 1
        return (calendar.dateByAddingComponents(components, toDate: self.startOfMonth, options: NSCalendarOptions())?.dateByAddingTimeInterval(-1))!
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我被困在第 2 步。在给定开始日期和结束日期的情况下,我找不到获取日期范围的方法。

有没有办法做到这一点?

vad*_*ian 5

斯威夫特 3:

let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month], from: Date())
let startOfMonth = calendar.date(from:components)!
let numberOfDays = calendar.range(of: .day, in: .month, for: startOfMonth)!.upperBound
let allDays = Array(0..<numberOfDays).map{ calendar.date(byAdding:.day, value: $0, to: startOfMonth)!}
let workDays = allDays.filter{ !calendar.isDateInWeekend($0) }
Run Code Online (Sandbox Code Playgroud)