如何找到存储数据的最近日期
How to find the nearest date of the stored data
例如:
- 存储数据:date = data1(2015.12.31),data2(2016.01.05),data3(2016.01.14),data4(2016.01.15),data5(2016.01.18)
- 今天是 2016.01.12
- 那么最近的数据是data3
这里data3可以调用哪些方法?
realDate(datePicker.date), date(textField.text), content(textField.text)
在核心数据中。
var stores: Contact!
// Contact is CoreData Entity Name.
@IBOutlet weak var label: UILabel!
ViewController viewDidLoad :
let list = [stores]
let timeSort = list.map{_ in stores?.realDate!.timeIntervalSinceNow}.filter{[=11=] > 0}.sort(<)
if let firstTime = timeSort.first {
_ = NSDate(timeIntervalSinceReferenceDate: firstTime!)
if timeSort.first != nil {
label.text = stores?.content
} else { }
}
我正在尝试寻求有关编写代码的帮助。没有报错,标签上没有显示任何信息。
您可以使用 NSDate 属性 timeIntervalSinceNow 对日期进行排序并获取第一个正值:
edit/update:
Swift 3引入了Date
,符合Comparable
协议,现在可以很方便的排序了:
extension Date {
init?(_ year: Int,_ month: Int,_ day: Int) {
guard let date = DateComponents(calendar: .current, year: year, month: month, day: day, hour: 12).date else { return nil }
self = date
}
}
游乐场测试:
let dateList = [Date(2018, 2, 18)!, Date(2017, 12, 31)!, Date(2018, 1, 5)!, Date(2018, 2, 14)!, Date(2018, 2, 15)!]
if let closestDate = dateList.sorted().first(where: {[=11=].timeIntervalSinceNow > 0}) { // "Feb 15, 2018, 12:00 PM"
print(closestDate.description(with: .current)) // Thursday, February 15, 2018 at 12:00:00 PM Brasilia Summer Time
}
例如:
- 存储数据:date = data1(2015.12.31),data2(2016.01.05),data3(2016.01.14),data4(2016.01.15),data5(2016.01.18)
- 今天是 2016.01.12
- 那么最近的数据是data3
这里data3可以调用哪些方法?
realDate(datePicker.date), date(textField.text), content(textField.text)
在核心数据中。
var stores: Contact!
// Contact is CoreData Entity Name.
@IBOutlet weak var label: UILabel!
ViewController viewDidLoad :
let list = [stores]
let timeSort = list.map{_ in stores?.realDate!.timeIntervalSinceNow}.filter{[=11=] > 0}.sort(<)
if let firstTime = timeSort.first {
_ = NSDate(timeIntervalSinceReferenceDate: firstTime!)
if timeSort.first != nil {
label.text = stores?.content
} else { }
}
我正在尝试寻求有关编写代码的帮助。没有报错,标签上没有显示任何信息。
您可以使用 NSDate 属性 timeIntervalSinceNow 对日期进行排序并获取第一个正值:
edit/update:
Swift 3引入了Date
,符合Comparable
协议,现在可以很方便的排序了:
extension Date {
init?(_ year: Int,_ month: Int,_ day: Int) {
guard let date = DateComponents(calendar: .current, year: year, month: month, day: day, hour: 12).date else { return nil }
self = date
}
}
游乐场测试:
let dateList = [Date(2018, 2, 18)!, Date(2017, 12, 31)!, Date(2018, 1, 5)!, Date(2018, 2, 14)!, Date(2018, 2, 15)!]
if let closestDate = dateList.sorted().first(where: {[=11=].timeIntervalSinceNow > 0}) { // "Feb 15, 2018, 12:00 PM"
print(closestDate.description(with: .current)) // Thursday, February 15, 2018 at 12:00:00 PM Brasilia Summer Time
}