var calendar = Calendar.autoupdatingCurrent
calendar.firstWeekday = 2 // Start on Monday (or 1 for Sunday)
let today = calendar.startOfDay(for: Date())
var week = [Date]()
if let weekInterval = calendar.dateInterval(of: .weekOfYear, for: today) {
for i in 0...6 {
if let day = calendar.date(byAdding: .day, value: i, to: weekInterval.start) {
week += [day]
}
}
}
return week
4条答案
按热度按时间wqsoz72f1#
要获取一周中的工作日,请执行以下操作:
要将其显示为“Thursday = 82”,则为:
或者
如果你想让它考虑
firstWeekday
(通常只有当你不再从结果中过滤周末时才需要考虑,因此下面的isDateInWeekend
上没有filter
):5uzkadbs2#
我在调整Rob的解决方案以适应星期一开始的时间时遇到了问题。此解决方案适用于您的
calendar.firstWeekday
设置。szqfcxe23#
我在Calendar上做了一个小的扩展,这可能对其他寻找功能更强的解决方案的人有帮助。
flmtquvp4#
你也可以像这样使用enumerateDates: