检查哪个日期最接近今天

Checking which date is closest to today

我有一组 NSDates,我希望能够检查每个 NSDates 并按最接近今天的顺序排列。

有什么方法或功能可以做到这一点吗?例如,这是我的日期:

var dateArr = ["2015-11-08", "2015-11-09", "2015-11-10"]

我现在想遍历它们并将它们按离当前日期最近的日期排序。

如果你想用 NSDate 个对象按照最接近当前日期的顺序对数组进行排序,你可以这样做:

let toodayUnixTime = NSDate().timeIntervalSince1970
// array with `NSDate` objects
var dates = [...]
// Sort action
dates.sortInPlace({ abs([=10=].timeIntervalSince1970 - toodayUnixTime) < abs(.timeIntervalSince1970 - toodayUnixTime) })

在这种情况下,我们有 dates 数组和 NSDate。排序数组的第一个对象最接近当前日期。

据我了解,您的数组中有 NSDates。我使用此代码创建日期数组:

let cal = NSCalendar.currentCalendar()
let d1 = cal.dateFromComponents(
    {
        let comp = NSDateComponents()
        comp.year = 2015
        comp.month = 11
        comp.day = 8
        return comp
    }())

let d2 = cal.dateFromComponents(
    {
        let comp = NSDateComponents()
        comp.year = 2015
        comp.month = 11
        comp.day = 9
        return comp
    }())

let d3 = cal.dateFromComponents({
    let comp = NSDateComponents()
    comp.year = 2015
    comp.month = 11
    comp.day = 6
    return comp
    }())

let dates = [d1!,d2!,d3!]

我自己做的排序

var today:NSDate?
// creates an date at the beginning an given time unit, here Day
cal.rangeOfUnit(.Day, startDate: &today, interval: nil, forDate: NSDate())

let sortedDates = dates.sort { (d1, d2) -> Bool in
    var t1 = abs(d1.timeIntervalSinceDate(today!))
    var t2 = abs(d2.timeIntervalSinceDate(today!))
    return t1 <= t2
}

print(sortedDates)