以String格式对包含日期的数组进行排序

时间:2014-12-13 02:06:08

标签: arrays sorting date swift

我有一个这样的数组:

["Novembre", "Mars", "Décembre", "Octobre", "Février", "Janvier"]

我如何对它进行排序以使其成为:

["Décembre", "Novembre", "Octobre", "Mars", "Février", "Janvier"]

2 个答案:

答案 0 :(得分:3)

几乎相同,但肯定按规则生成字典比自己输入月份名称和数字更好:

var names:[String] = []
if let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) {
    cal.locale = NSLocale(localeIdentifier: "fr")
    names = cal.monthSymbols as [String]
}
var months : [String:Int] = [:]
for (ix,name) in enumerate(names) {
    months[name] = ix
}
// now we are ready
let data = ["Novembre", "Mars", "Décembre", "Octobre", "Février", "Janvier"]
let result = data.sorted {months[$0.lowercaseString] > months[$1.lowercaseString]}

答案 1 :(得分:0)

日历月名称未按字母顺序排列,因此您需要为每个月提供自定义排序顺序值。

var array = ["Novembre", "Mars", "Décembre", "Octobre", "Février", "Janvier"]
var sortedArray = array.sorted({
    let dict = ["Janvier":1,"Février":2,"Mars":3,"Décembre":12,"Novembre":11,"Octobre":10]
    return dict[$0] > dict[$1]
})

println("sorted \(sortedArray)")