[英]How to order an array of diffrent Dates by Weekday in Swift
我在 Swift 中有一個包含許多不同日期的數組,我需要按工作日對它們進行排序(或者甚至更好地將它們每個拆分成一個新數組,一個包含星期一星期二的所有日期......)什么是最好的方法來做到這一點?
首先,您必須獲得每一天的工作日:
let dates: [Date] = ...
let datesWithWeekday: [(date: Date, weekday: Int)] = dates.map {
let weekday = Calendar.current.component(.weekday, from: $0)
return (date: $0, weekday: weekday)
}
然后你可以用它做任何你想做的事情:
var datesPerWeekday: [Int: [Date]] = [:]
for (date, weekday) in datesWithWeekday {
datesPerWeekday[weekday, default: []].append(date)
}
如果你不關心日期在哪一周,只關心星期幾,你可以使用Dictionary(grouping:by:)
將日期數組轉換為[Int: [Date]]
:
func weekDay(of date: Date) -> Int {
return Calendar.current.component(.weekday, from: date)
}
let weekDays = Dictionary(grouping: dates, by: weekDay)
print(weekDays)
例如, weekDays[7]
將提供星期六的所有日期,如果星期六沒有日期,則為nil
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.