2017-06-03 82 views
2

基本上我的挑战是:iOS - 仅包含当天日期的对象过滤器阵列

我得到了一个对象数组。每个对象都有一个日期属性。 我想获得匹配今天日期的对象数组。因此,我想根据日期将数组分组。

我想通过分组今天,昨天的对象,最近7天的历史列表中显示,.....


我可以使用排序功能排序数组:

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

但我需要一个基于日期的过滤器函数。 我希望只有今天创建的所有历史数据中的数据。

任何快速伪代码。

谢谢。

回答

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

更新:
要转换stringDate使用以下内容:

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 
+0

What's字符串样品,需要为你写的格式@ user3804063 –

+0

确保它是这样的:2017年6月1日下午9时32分48秒 – user3804063

+0

对没错,但我不得不数据库结构与日期字符串, 所以我想知道如果我可以过滤日期(这是字符串) 我可以改变数据库的另一种选择,但它需要时间,因为我的项目是复杂的。 它是1年6月@Rashwan – user3804063

4
let date1 = NSDate() 
let date2 = NSDate() 
let dates = [date1, date2] 

let calendar = NSCalendar.currentCalendar() 
let todayDates = dates.filter({calendar.isDateInToday($0)}) 
+0

感谢您的快速回答 – user3804063