一尘不染

按日期对数组中的对象进行排序

swift

我有一个包含一个称为的对象的数组HistoryObject,它具有诸如“日期”,“名称”等属性。

我正在对数组进行排序,如下所示:

 let sortedArray = HistoryArray.sort({ $0.date.compare($1.date) == NSComparisonResult.OrderedDescending})

应该将日期从新到旧排序。例如:

  • 2016年6月30日
  • 2016年6月29日

等等..

但是,当我的数组包含“ 2016年7月2日”时,排序后的数组将变为:

  • 2016年6月30日
  • 2016年6月29日
  • 2016年7月2日

排序后,“ 2016年7月2日”应该位于顶部,而现在位于底部?我该如何解决这个问题?


阅读 322

收藏
2020-07-07

共1个答案

一尘不染

使用Swift 4和Swift 3

let testArray = ["25 Jun, 2016", "30 Jun, 2016", "28 Jun, 2016", "2 Jul, 2016"]
var convertedArray: [Date] = []

var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MM, yyyy"// yyyy-MM-dd"

for dat in testArray {
    let date = dateFormatter.date(from: dat)
    if let date = date {
        convertedArray.append(date)
    }
}

var ready = convertedArray.sorted(by: { $0.compare($1) == .orderedDescending })

print(ready)

使用Swift 2

例如,您有一个带有日期的数组和另一个1数组,您将在其中保存转换后的日期:

var testArray = ["25 Jun, 2016", "30 Jun, 2016", "28 Jun, 2016", "2 Jul, 2016"]
var convertedArray: [NSDate] = []

之后,我们转换日期:

var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd MM, yyyy"// yyyy-MM-dd"

for dat in testArray {
    var date = dateFormatter.dateFromString(dat)
    convertedArray.append(date!)
}

结果:

var ready = convertedArray.sort({ $0.compare($1) == .OrderedDescending })

print(ready)
2020-07-07