我有,我希望能夠通過每一個檢查NSDates的數組,並整理,其中一個是最接近今天。檢查其日期最接近今天
是否有這樣做的任何方法或功能?因此,例如,這是我的日期:
var dateArr = ["2015-11-08", "2015-11-09", "2015-11-10"]
我現在想遍歷它們,並把它們按照最近的日期到當前日期的順序。
我有,我希望能夠通過每一個檢查NSDates的數組,並整理,其中一個是最接近今天。檢查其日期最接近今天
是否有這樣做的任何方法或功能?因此,例如,這是我的日期:
var dateArr = ["2015-11-08", "2015-11-09", "2015-11-10"]
我現在想遍歷它們,並把它們按照最近的日期到當前日期的順序。
據我所知,你有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)
如果你想在最接近的日期的順序排序與NSDate
對象數組到當前的日期,你可以做這樣的:
let toodayUnixTime = NSDate().timeIntervalSince1970
// array with `NSDate` objects
var dates = [...]
// Sort action
dates.sortInPlace({ abs($0.timeIntervalSince1970 - toodayUnixTime) < abs($1.timeIntervalSince1970 - toodayUnixTime) })
在這種情況下,我們有dates
陣列NSDate
。排序數組的第一個對象最接近當前日期。
感謝,雖然這些都是「dateArr」的NSDate對象,我都顯示他們爲字符串,所以你其實可以看到不同的日期,我認爲對不起我的錯!我只需要能夠按照最接近當前日期的順序對數組內的NSDate元素進行排序。你的答案是否這樣做? –
@HenryBrown我編輯你的案例的答案 –
這些今天沒有排序,但現在。這將導致不同的結果。 – vikingosegundo
謝謝你這是一個更好的答案後,進一步的研究 –