【问题标题】:NSPredicate Get Date by IntervalNSPredicate 按间隔获取日期
【发布时间】:2015-08-08 14:28:51
【问题描述】:

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

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

【问题讨论】:

  • 请更好地解释你的自我,描述你想要得到什么
  • 例如,我需要获取 1 年的日期,日期数组的每月间隔,但我不知道如何实现这一点
  • 要获取日期之间的所有日期(如 2015 年 1 月和 2015 年 2 月),您必须执行 date >= dateJan2015 AND date <= dateFeb2015,但如果您想要获取一个月的日期粒度,则必须添加他们手动,或自己做一个中位数。如果我记得,有一个@mean 可以使用,或者@sum 根据你的需要。

标签: ios swift nsdate nspredicate


【解决方案1】:

如果给定日期,您想要生成接下来的 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!)
}

请注意,这些将相隔一个月,但不一定在好日子或好月的界限。


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

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),除非给定的日期时间是。

如果要过滤或汇总数据并将其分配给区间,那就是另一个问题了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    相关资源
    最近更新 更多