Isu*_*uru 2 nsdate weekday weekend ios swift
我正在尝试获取给定月份内的日期。
我的计划是
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 步。在给定开始日期和结束日期的情况下,我找不到获取日期范围的方法。
有没有办法做到这一点?
获取当前日历
let calendar = NSCalendar.currentCalendar()
Run Code Online (Sandbox Code Playgroud)从当前日期获取month和year日期组件
let components = calendar.components([.Year, .Month], fromDate: NSDate())
Run Code Online (Sandbox Code Playgroud)获取当月第一天的日期
let startOfMonth = calendar.dateFromComponents(components)!
Run Code Online (Sandbox Code Playgroud)获取当月的天数
let numberOfDays = calendar.rangeOfUnit(.Day, inUnit: .Month, forDate: startOfMonth).length
Run Code Online (Sandbox Code Playgroud)NSDate为当月的每一天创建一个实例数组
let allDays = Array(0..<numberOfDays).map{ calendar.dateByAddingUnit(.Day, value: $0, toDate: startOfMonth, options: [])!}
Run Code Online (Sandbox Code Playgroud)过滤周末内的天数
let workDays = allDays.filter{ !calendar.isDateInWeekend($0) }
Run Code Online (Sandbox Code Playgroud)斯威夫特 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)
| 归档时间: |
|
| 查看次数: |
2787 次 |
| 最近记录: |