如何在 swift 中获取一个月的对象
How to get objects for a month in swift
我有一个数组,这个数组包含 Observation
类型的元素,其中有一个 date
属性。
我只想根据月份和年份获取所有元素。
假设我有一个日期 01/11/2015,所以我想从 observationList
中获取所有元素,这些元素具有 11 月和 2015 年。
示例代码如下,
class Observation
{
var date:NSDate = NSDate()
var value:String = ""
}
var observationList = [Observation]()
假设上面的 observationList
有元素,那么我将如何获得所有元素,例如2015 年 11 月?
正如@dasdom 指出的那样,您需要一个 NSCalendar 来获取 NSDate 的组件。
let calendar = NSCalendar.currentCalendar() // you can also ask for a specific calendar (e.g Gregorian)
let components = calendar.components([.Month, .Year], fromDate:date)
创建扩展以获取日期组件:
extension NSDate {
var month: Int {
return NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!.component(.Month, fromDate: self)
}
var year: Int {
return NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!.component(.Year, fromDate: self)
}
}
然后您可以按如下方式轻松筛选日期:
class Observation {
var date = NSDate()
var value = String()
init(date: NSDate, value: String) {
self.date = date
self.value = value
}
}
let ob1 = Observation(date: NSDate(), value: "Testing")
let observationList = [ob1]
let filteredList = observationList.filter(){ [=11=].date.year == 2015 && [=11=].date.month == 12 }
print(filteredList.first?.value ?? "") // Testing
您可以过滤数组
var observations = [Observation]()
用这样的filter
方法
let calendar = NSCalendar.currentCalendar()
let filteredObservations = observations.filter { (observation) -> Bool in
let components = calendar.components([.Month, .Year], fromDate:observation.date)
return components.month == 11 && components.year == 2015
}
我有一个数组,这个数组包含 Observation
类型的元素,其中有一个 date
属性。
我只想根据月份和年份获取所有元素。
假设我有一个日期 01/11/2015,所以我想从 observationList
中获取所有元素,这些元素具有 11 月和 2015 年。
示例代码如下,
class Observation
{
var date:NSDate = NSDate()
var value:String = ""
}
var observationList = [Observation]()
假设上面的 observationList
有元素,那么我将如何获得所有元素,例如2015 年 11 月?
正如@dasdom 指出的那样,您需要一个 NSCalendar 来获取 NSDate 的组件。
let calendar = NSCalendar.currentCalendar() // you can also ask for a specific calendar (e.g Gregorian)
let components = calendar.components([.Month, .Year], fromDate:date)
创建扩展以获取日期组件:
extension NSDate {
var month: Int {
return NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!.component(.Month, fromDate: self)
}
var year: Int {
return NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!.component(.Year, fromDate: self)
}
}
然后您可以按如下方式轻松筛选日期:
class Observation {
var date = NSDate()
var value = String()
init(date: NSDate, value: String) {
self.date = date
self.value = value
}
}
let ob1 = Observation(date: NSDate(), value: "Testing")
let observationList = [ob1]
let filteredList = observationList.filter(){ [=11=].date.year == 2015 && [=11=].date.month == 12 }
print(filteredList.first?.value ?? "") // Testing
您可以过滤数组
var observations = [Observation]()
用这样的filter
方法
let calendar = NSCalendar.currentCalendar()
let filteredObservations = observations.filter { (observation) -> Bool in
let components = calendar.components([.Month, .Year], fromDate:observation.date)
return components.month == 11 && components.year == 2015
}