簡體   English   中英

如何在 Swift 中按工作日訂購不同日期的數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM