NSPredicate按间隔获取日期

时间:2015-08-08 14:28:51

标签: ios swift nsdate nspredicate

我需要能够以 5分钟间隔,10分钟间隔,每日,每月和每年间隔获得股票的日期数组。到目前为止,我只能提出这个谓词,但我不确定如何继续实施间隔。

var datetime =  "2014-07-14T09:00:00:+08:000"
quoteArray = Quote.objectsWhere("date >= %@",datetime)

1 个答案:

答案 0 :(得分:0)

如果给定日期,您希望生成接下来的12个月日期,则使用NSCalendar。使用了游乐场。

let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'hh:mm:ss:Z"
var ds = "2014-07-14T09:00:00:+0000"
var dt = formatter.dateFromString(ds)  
print( formatter.stringFromDate(dt!))  // just show what we have.

let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)
var monthDates = [NSDate]()
for i in 1...12 {
    let month = calendar?.dateByAddingUnit(NSCalendarUnit.Month, value: i, toDate: dt!, options: NSCalendarOptions.MatchStrictly)
    print(month!)
    monthDates.append(month!)
}

请注意,这些会相隔一个月,但不一定是好日子或月份。

从给定的日期时间开始,每隔10分钟获得24小时的时间:

var min10Intervals = [NSDate]()
for i in 1..144 {
    let tenMinute = calendar?.dateByAddingUnit(NSCalendarUnit.Minute, value: i*10, toDate: dt!, options: NSCalendarOptions.MatchStrictly)
    min10Intervals.append(tenMinute!)
}

请注意,除非给定的日期时间为10分钟,否则它们不会相隔10分钟(如11:10)。

如果有人过滤或汇总数据并将其分配给间隔,则这是一个不同的问题。