排序日期数组orderedAscending swift
Posted
技术标签:
【中文标题】排序日期数组orderedAscending swift【英文标题】:Sorting date array orderedAscending swift 【发布时间】:2019-11-11 11:40:43 【问题描述】:我正在尝试按升序对日期进行排序。我能够以"MM/dd/yyyy"
格式解决日期,但是当更改为"dd mmm yyyy"
格式时,我得到一个错误。
这行得通
var dateArray = [Date]()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy"
dateArray.append(dateFormatter.date(from: "09/04/2016")!)
dateArray.append(dateFormatter.date(from: "01/01/2000")!)
dateArray.append(dateFormatter.date(from: "12/12/1903")!)
dateArray.append(dateFormatter.date(from: "04/23/2222")!)
dateArray.append(dateFormatter.date(from: "08/06/1957")!)
dateArray.append(dateFormatter.date(from: "11/11/1911")!)
dateArray.append(dateFormatter.date(from: "02/05/1961")!)
dateArray.sort (date1, date2) -> Bool in
return date1.compare(date2) == ComparisonResult.orderedAscending
for date in dateArray
print(dateFormatter.string(from: date))
但这不是
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd mmm yyyy"
dateArray.append(dateFormatter.date(from:"01 Mar 2017")!)
dateArray.append(dateFormatter.date(from: "03 Feb 2017")!)
dateArray.append(dateFormatter.date(from: "15 Jan 1998")!)
dateArray.sort (date1, date2) -> Bool in
return date1.compare(date2) == ComparisonResult.orderedAscending
for date in dateArray
print(dateFormatter.string(from: date))
【问题讨论】:
查看@Sh_Khan 的回答。您还可以将排序简化为dateArray.sort(by: <)
【参考方案1】:
使用“MMM”而不是“mmm”
MMM
是月份的简写名称m, mm
是分钟
请查看此网站https://nsdateformatter.com 将有助于了解 NSDateFormatter
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy"
dateArray.append(dateFormatter.date(from:"01 Mar 2017")!)
dateArray.append(dateFormatter.date(from: "03 Feb 2017")!)
dateArray.append(dateFormatter.date(from: "15 Jan 1998")!)
dateArray.sort (date1, date2) -> Bool in
return date1.compare(date2) == ComparisonResult.orderedAscending
for date in dateArray
print(dateFormatter.string(from: date))
【讨论】:
【参考方案2】:你需要MMM
而不是mmm
dateFormatter.dateFormat = "dd MMM yyyy"
【讨论】:
【参考方案3】:只需将格式从小写“mmm”更改为大写“MMM”,如下所示:
var dateArray = [Date]()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy"
dateArray.append(dateFormatter.date(from:"01 Mar 2017")!)
dateArray.append(dateFormatter.date(from: "03 Feb 2017")!)
dateArray.append(dateFormatter.date(from: "15 Jan 1998")!)
dateArray.sort (date1, date2) -> Bool in
return date1.compare(date2) == ComparisonResult.orderedAscending
for date in dateArray
print(dateFormatter.string(from: date))
【讨论】:
以上是关于排序日期数组orderedAscending swift的主要内容,如果未能解决你的问题,请参考以下文章
iOS小技能:对象数组按照日期分组和排序,使用块代码实现数组排序和乱序。