我有一個日期爲2017-07-06,2017-06-07,2017-07-07
的數組。我想按升序對這些日期進行排序。所以2017-06-07會先到。但它並沒有發生。我正在使用下面的代碼:如何排序字符串的日期?
func sortDates(array:NSMutableArray)->[String] {
var strArray:[String] = []
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"// yyyy-MM-dd"
var convertedArray: [Date] = []
for dat in array {
let date = dateFormatter.date(from: dat as! String)
convertedArray.append(date!)
}
let arrDates = convertedArray.sorted(by: { $0.compare($1) == .orderedAscending })
for value in arrDates {
let formatter = DateFormatter()
// initially set the format based on your datepicker date
formatter.dateFormat = "yyyy-MM-dd"
let myString = formatter.string(from: value)
// convert your string to date
let yourDate = formatter.date(from: myString)
if yourDate != nil {
//then again set the date format whhich type of output you need
formatter.dateFormat = "yyyy-MM-dd"
// again convert your date to string
let myStringafd = formatter.string(from: yourDate!)
strArray.append(myStringafd)
}
}
return strArray
}
請指導我在哪裏做錯了?
當你說「它沒有發生」時,你是什麼意思?解釋你的代碼在做什麼。我不想通讀代碼來試圖理解它。並確定它做錯了什麼。 – Fogmeister
使用'yyyy-MM-dd',而不是'mm'小寫字母用於分鐘(參見文檔http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns )。 – Larme
除了標識符問題,你可以比較容易'$ 0 <$ 1' – vadian