【问题标题】:Sorting date array orderedAscending swift排序日期数组orderedAscending swift
【发布时间】:2019-11-11 11:40:43
【问题描述】:

我正在尝试按升序对日期进行排序。我能够以"MM/dd/yyyy" 格式解决日期,但是当更改为"dd mmm yyyy" 格式时,我得到一个错误。

这行得通

var dateArray = [Date]()

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy"

dateArray.append(dateFormatter.date(from: "09/04/2016")!)
dateArray.append(dateFormatter.date(from: "01/01/2000")!)
dateArray.append(dateFormatter.date(from: "12/12/1903")!)
dateArray.append(dateFormatter.date(from: "04/23/2222")!)
dateArray.append(dateFormatter.date(from: "08/06/1957")!)
dateArray.append(dateFormatter.date(from: "11/11/1911")!)
dateArray.append(dateFormatter.date(from: "02/05/1961")!)

dateArray.sort { (date1, date2) -> Bool in
    return date1.compare(date2) == ComparisonResult.orderedAscending
}

for date in dateArray {
    print(dateFormatter.string(from: date))
}

但这不是

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd mmm yyyy"

dateArray.append(dateFormatter.date(from:"01 Mar 2017")!)
dateArray.append(dateFormatter.date(from: "03 Feb 2017")!)
dateArray.append(dateFormatter.date(from: "15 Jan 1998")!)

dateArray.sort { (date1, date2) -> Bool in
    return date1.compare(date2) == ComparisonResult.orderedAscending
}

for date in dateArray {
    print(dateFormatter.string(from: date))
}

【问题讨论】:

  • 查看@Sh_Khan 的回答。您还可以将排序简化为dateArray.sort(by: <)

标签: ios swift


【解决方案1】:

使用“MMM”而不是“mmm”

MMM 是月份的简写名称m, mm 是分钟

请查看此网站https://nsdateformatter.com 将有助于了解 NSDateFormatter

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy"

dateArray.append(dateFormatter.date(from:"01 Mar 2017")!)
dateArray.append(dateFormatter.date(from: "03 Feb 2017")!)
dateArray.append(dateFormatter.date(from: "15 Jan 1998")!)

dateArray.sort { (date1, date2) -> Bool in
    return date1.compare(date2) == ComparisonResult.orderedAscending
}

for date in dateArray {
    print(dateFormatter.string(from: date))
}

【讨论】:

    【解决方案2】:

    你需要MMM 而不是mmm

    dateFormatter.dateFormat = "dd MMM yyyy"
    

    【讨论】:

      【解决方案3】:

      只需将格式从小写“mmm”更改为大写“MMM”,如下所示:

      var dateArray = [Date]()
      
      let dateFormatter = DateFormatter()
      dateFormatter.dateFormat = "dd MMM yyyy"
      
      dateArray.append(dateFormatter.date(from:"01 Mar 2017")!)
      dateArray.append(dateFormatter.date(from: "03 Feb 2017")!)
      dateArray.append(dateFormatter.date(from: "15 Jan 1998")!)
      
      dateArray.sort { (date1, date2) -> Bool in
          return date1.compare(date2) == ComparisonResult.orderedAscending
      }
      
      for date in dateArray {
          print(dateFormatter.string(from: date))
      }
      

      【讨论】:

        猜你喜欢
        • 2021-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多