2015-08-08 80 views
0

我需要能夠獲得的日期陣列5分鐘間隔,10分鐘間隔,每日,每月和每年的間隔爲一個股票。到目前爲止,我只能說出這個謂詞,但我不確定我如何繼續實現區間。NSPredicate通過時間間隔獲取日期

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

請說明你的自我更好,描述你想得到什麼 – shannoga

+0

例如,我需要得到1年的日期與日期數組的月間隔,但我不知道如何實現這一點 –

+0

要獲取所有日期之間日期(例如2015年1月和2015年2月),您必須執行'date> = dateJan2015和date <= dateFeb2015',但是如果您希望獲取一個月的日間粒度,則必須手動添加它們,或者執行你的中位數。如果我記得,有一個你可以使用的「@ mean」,或者根據你想要的「@ sum」。 – Larme

回答

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)除非給定的日期時間。

如果您正在過濾或彙總數據並將其分配給間隔,則這是一個不同的問題。