如何在Swift中按日期对数组进行分组?

6
我有一个模型,其中包含一个日期属性。
我可以通过 "Dictionary(grouping..)" 将日期分组。
let grouped = Dictionary(grouping: orders.results, by: { $0.createdAt })

但问题是在解码时,我这样做了:
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

所以我的Date属性也考虑了时间。

我应该如何按照yyyy-MM-dd进行分组?

2个回答

16

你可以使用 Calendar startOfDay

let cal = Calendar.current
let grouped = Dictionary(grouping: orders.results, by: { cal.startOfDay(for: $0.createdAt) })

4

我喜欢按天分组,因为按日期分组会根据时间间隔分组,而这个解决方案会按照天、月和年进行分组。

let groupDic = Dictionary(grouping: arr) { (pendingCamera) -> DateComponents in
    print("group arr: \(String(describing: pendingCamera.date))")
        
    let date = Calendar.current.dateComponents([.day, .year, .month], from: (pendingCamera.date)!)
        
    return date
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接