swift - 如何找到存储数据的最近日期

标签 swift date time nsdate

例如:

  • 存储数据: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!

View Controller View 加载:

let list = [stores]
let timeSort = list.map{_ in stores?.realDate!.timeIntervalSinceNow}.filter{$0 > 0}.sort(<)
  if let firstTime = timeSort.first {
  _ = NSDate(timeIntervalSinceReferenceDate: firstTime!)
    if timeSort.first != nil {
      label.text = stores?.content
    } else { }
  }

我正试图获得有关编写代码的帮助。没有错误,它不显示标签上的任何信息。

最佳答案

您可以使用 NSDate 属性 timeIntervalSinceNow 对日期进行排序并获取第一个正值:

编辑/更新:

Swift 3 引入了 Date ,它符合 Comparable 协议(protocol),因此现在可以轻松排序:

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
    }
}

Playground 测试:

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: {$0.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
}

关于swift - 如何找到存储数据的最近日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34726703/

相关文章:

r ifelse date 不添加天数

java - Android - 在 Chronometer 中计算耗时

algorithm - 高效查询整数数组中范围的相等性

javascript - JS 秒表定时器 H :m:s:ms format, 当达到 60 分钟时,分钟不会重置

ios - swift-在ios中使用未声明的类型 'firebase'

ruby - Rails 日期比较;日期大于或等于几天前

sql - 如何在 SQL 中计算该月的最后一天?

ios - 如何快速计算联系人数量?

javascript - 如何将数据从 swift 传递到 javascript?

ios - 使用 AFNetworking Multipart 表单数据上传多个图像不起作用