检查哪个日期最接近今天
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)
我有一组 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)