【问题标题】:iOS - Filter array of objects which contains today's date onlyiOS - 过滤仅包含今天日期的对象数组
【发布时间】:2017-06-03 15:21:29
【问题描述】:

基本上我的挑战是:

我有一个对象数组。每个对象都有一个日期属性。 我想获取与今天日期匹配的对象数组。

所以,我想根据日期对数组进行分组。

我想通过对今天、昨天、过去 7 天的对象进行分组来显示在历史列表中......


我可以使用排序函数对数组进行排序:

historylist.sort(by: {$0.createdDate! as Date > $1.createdDate! as Date })

但我需要一个基于日期的过滤功能。 我想要历史学家中仅在今天创建的所有数据。

任何快速的伪代码。

谢谢。

【问题讨论】:

    标签: ios arrays swift sorting filter


    【解决方案1】:
    let date1 = NSDate()
    let date2 = NSDate()
    let dates = [date1, date2]
    
    let calendar = NSCalendar.currentCalendar()
    let todayDates = dates.filter({calendar.isDateInToday($0)})
    

    【讨论】:

      【解决方案2】:

      演示如何使用过滤date objects

      let d1 = Date().addingTimeInterval(22000000)
      let d2 = Date().addingTimeInterval(23000000)
      let d3 = Date().addingTimeInterval(30000000)
      let dates = [d1, d2, d3, Date(), Date()]
      
      let calendar = Calendar.current
      let todayDates = dates.filter({calendar.isDateInToday($0 as Date)})
      print(todayDates) // [2017-06-03 15:50:11 +0000, 2017-06-03 15:50:11 +0000]
      

      所以在你的情况下你应该这样做:

      let todayDates = historylist.filter({calendar.isDateInToday($0.createdDate as Date)})
      

      更新:
      要将 string 转换为 Date,请使用以下命令:

      extension String {
          var toDate: Date {
              return Date.Formatter.customDate.date(from: self)!
          }
      }
      
      extension Date {
          struct Formatter {
              static let customDate: DateFormatter = {
                  let formatter = DateFormatter()
                  formatter.locale = Locale(identifier: "en_US_POSIX")
                  formatter.dateFormat = "MM-dd-yyyy hh:mm:ss a"
                  return formatter
              }()
          }
      }
      
      let strDate = "06-01-2017 09:32:48 PM"
      let date = strDate.toDate
      

      【讨论】:

      • 字符串样本是什么,需要它为您编写格式@user3804063
      • 确定是这样的:06-01-2017 09:32:48 PM
      • 是的,但是我的数据库结构是日期为字符串,所以我想知道是否可以过滤日期(字符串)我可以将数据库更改为另一种选择,但这需要时间作为我的项目复杂。现在是 6 月 1 日@Rashwan
      • 如何过滤昨天的对象?
      • @user3804063,添加了如何将字符串转换为日期的代码。要获取明天的日期,请使用 isDateInTomorrow 而不是 isDateInToday 使用 isDateInYesterday
      猜你喜欢
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多