我有一系列日期。我需要找到最新的一个。有人能告诉我一个例子吗?
答案 0 :(得分:13)
您可以NSDate
符合Comparable
,如图所示here
鉴于此,您可以使用maxElement
来查找最大值(即最新值)。
import Foundation
extension NSDate: Comparable { }
public func ==(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.isEqualToDate(rhs)
}
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.compare(rhs) == .OrderedAscending
}
let dates = [NSDate(), NSDate()]
let maxDate = maxElement(dates)
请注意,maxElements
对于空数组来说很明显,所以您可能希望用isEmpty
来保护它:
let maxDate = dates.isEmpty ? nil : Optional(maxElement(dates))
或者,如果您不想进入延伸路线:
if let fst = dates.first {
let maxDate = dropFirst(dates).reduce(fst) {
$0.laterDate($1)
}
}
或者,返回一个可选的:
let maxDate = dates.reduce(nil) {
(lhs: NSDate?, rhs: NSDate?)->NSDate? in
lhs.flatMap({rhs?.laterDate($0)}) ?? rhs
}
答案 1 :(得分:2)
您可以使用reduce
:
dates.reduce(Date.distantPast) { $0 > $1 ? $0 : $1 }
答案 2 :(得分:0)
在你的游乐场中运行
var dates = [NSDate]()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
let date1 = dateFormatter.dateFromString("02-06-1987")
let date2 = dateFormatter.dateFromString("02-06-2001")
let date3 = dateFormatter.dateFromString("02-06-2010")
//var date1 = NSDate()
dates.append(date3!)
dates.append(date1!)
dates.append(date2!)
var maxDate = dates[0]
for i in 0...dates.count-1
{
if(maxDate.compare(dates[i]).rawValue == -1){
maxDate = dates[i]
println(maxDate)
}
println(maxDate)
}
println(maxDate.description)
度过美好的一天:)