如何在swift 4中对数组进行排序

时间:2018-06-16 08:47:18

标签: ios swift swift4 nsdateformatter

我有一系列日期如下: -

  var dateArray = ["2016-04-20", "2016-04-22", "2016-04-25", "2016-04-30"]

我想知道它们之间的天数差异。我做了一些研究,我能够做到这一点,这里只有两个日期是我找到两个日期之间的差异的方法

let dateFormatter = DateFormatter()
let isoDate = "2016-04-20"
let calendar = NSCalendar.current
let currentDate = Date()

在我的 viewDidLoad 方法中,我做了这个

    override func viewDidLoad() {
    super.viewDidLoad()



//  let components = calendar.dateComponents([.day], from: )
    dateFormatter.dateFormat = "yyyy-MM-dd"
    dateFormatter.locale = Locale(identifier: "en_US_POSIX") //en_US_POSIX
    let formatedStartDate = dateFormatter.date(from: isoDate)
    let date = dateArray.compactMap { dateFormatter.date(from: $0) } // for date array
    print(date)
    let components = Set<Calendar.Component>([.day])
    let differenceOfDate = Calendar.current.dateComponents(components, from: formatedStartDate!, to: currentDate )

    print (differenceOfDate)
    apiData()
}

正如您在代码中看到的,我创建了一个常量让isoDate =“2016-04-20”并更改为 formatedStartDate 并找到此日期之间的差异到目前的日期然后它工作。但是,如果我有自己的日期数组,我怎么能找到我自己的日期数组的差异,并将其分为增加或减少顺序。请帮帮忙?

2 个答案:

答案 0 :(得分:3)

  • 创建日期格式化程序

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    dateFormatter.locale = Locale(identifier: "en_US_POSIX") //en_US_POSIX
    
  • 将日期字符串数组映射到Date实例

    let dateStringArray = ["2016-04-20", "2016-04-22", "2016-04-25", "2016-04-30"]
    let dateArray = dateStringArray.map {dateFormatter.date(from: $0)!} // add .sorted() if the array is unordered.
    
  • 在循环中获取相邻项之间的差异

    var differences = [Int]()
    for i in 0..<dateArray.count - 1 {
        let dayComponent = Calendar.current.dateComponents([.day], from: dateArray[i], to: dateArray[i+1])
        differences.append(dayComponent.day!)
    }
    print(differences)
    

答案 1 :(得分:1)

我不确定您是否只想比较彼此相邻的日期或比较每个日期。在第一种情况下,请使用int West = u | (((u>>24) - 1) << 24); 解决方案。在另一种情况下,你可以这样做:

vadian