在数组中查找最大和最小日期

iSe*_*har 2 nsdate ios swift

我有一个类似的阵列

    "11 Aug 2015",
    "24 Sep 2014",
    "25 Aug 2014",
    "07 Aug 2014",
    "07 Aug 2014"
Run Code Online (Sandbox Code Playgroud)

我想在其中找到最大和最小日期.

modifieddateArray.valueForKeyPath("@max.self")
modifieddateArray.valueForKeyPath("@min.self")
Run Code Online (Sandbox Code Playgroud)

我使用了上面给出的功能

最高为2014年8月25日

分钟为2014年8月7日

但最长日期为2015年8月11日,最低日期为2014年9月7日

它考虑的第一个值大于25,最小值为07.我怎么能解决.

提前致谢

E-R*_*die 7

通过使用Swift的强大内置功能:

// Operator Overloading Methods
func >(lhs: NSDate, rhs: NSDate) -> Bool {
    return lhs.compare(rhs) == NSComparisonResult.OrderedAscending
}

func <(lhs: NSDate, rhs: NSDate) -> Bool {
    return lhs.compare(rhs) == NSComparisonResult.OrderedDescending
}

// String to date
func dateFromString(dateStr: String) -> NSDate {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd LLL yyyy"

    // Eric D's suggestion, forcing locale to en_EN
    dateFormatter.locale = NSLocale(localeIdentifier: "en_EN")

    return dateFormatter.dateFromString(dateStr)!
}

// Date to String
func stringFromDate(date: NSDate) -> String {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd LLL yyyy"

    // Eric D's suggestion, forcing locale to en_EN
    dateFormatter.locale = NSLocale(localeIdentifier: "en_EN")

    return dateFormatter.stringFromDate(date)
}

// Array of String Dates
var dates = ["11 Aug 2015",
    "24 Sep 2014",
    "25 Aug 2014",
    "07 Aug 2014",
    "07 Aug 2014"]

// Map the Strings to NSDate
var dateInstances = dates.map({dateFromString($0)})

// Find Max
let maxVal = stringFromDate(dateInstances.reduce(dateInstances[0]){$0 > $1 ? $1 : $0})

// Find Min
let minVal = stringFromDate(dateInstances.reduce(dateInstances[0]){$0 < $1 ? $1 : $0})
Run Code Online (Sandbox Code Playgroud)

游乐场输出:

游乐场输出