我正在制作一个需要获取当前一周中所有日期的一年中某天的应用程序。
为此,我正在寻找与以下类似的结果(今天是3月23日,星期四)

Monday = 79
Tuesday = 80
Wednesday = 81
Thursday = 82
Friday = 83

可以包括周六和周日,但是我的申请仅需要工作日,而不需要周末。今天是第82天

最佳答案

要获取一周中的工作日,它是:

let calendar = Calendar.current
let today = calendar.startOfDay(for: Date())
let dayOfWeek = calendar.component(.weekday, from: today)
let weekdays = calendar.range(of: .weekday, in: .weekOfYear, for: today)!
let days = (weekdays.lowerBound ..< weekdays.upperBound)
    .compactMap { calendar.date(byAdding: .day, value: $0 - dayOfWeek, to: today) }  // use `flatMap` in Xcode versions before 9.3
    .filter { !calendar.isDateInWeekend($0) }

要显示为“星期四= 82”,它是
let formatter = DateFormatter()
formatter.dateFormat = "eeee' = 'D"
for date in days {
    print(formatter.string(from: date))
}

或者
let strings = days.map { formatter.string(from: $0) }

10-07 19:20
查看更多