2013-04-04 31 views
0

我有DATE數據類型的表中的列。我想設置謂詞,我只想比較沒有時間的日期。 由於時間的日期我沒有得到正確的結果。NSPredicate:無日期比較日期(目標C)

我當前的代碼 -

[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"((install_date > %@) AND (install_date <= %@))", fromDate,toDate]] 
+0

什麼是儘快??? – 2013-04-04 06:18:04

+0

asap儘快手段bro – jkk 2013-04-04 06:18:59

+4

@Mak:謝謝,但這不應該是一個禮儀,要求任何幫助。那之後的**意味着什麼?條件適用?這就是我的意思。 **請幫助我。**夠好。 – 2013-04-04 06:21:30

回答

2

我用這個函數從NSDate的

抽出時間
+(NSDate *)dateWithOutTime:(NSDate *)datDate 
{ 
if(datDate == nil) { 
    datDate = [NSDate date]; 
} 
NSDateComponents* comps = [[NSCalendar currentCalendar] components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:datDate]; 
return [[NSCalendar currentCalendar] dateFromComponents:comps]; 

} 

我的建議是採取了所有匹配的值,然後通過無比較日期相應進行篩選時間,因爲你不能在沒有時間的情況下取出日期,或者你必須先沒有時間存儲它。

+0

刪除時間日期的更簡單方法 '[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay startDate:&日期間隔:NULL forDate:date];'PS:它將日期設置爲一天的開始時間,因此時間設置爲00:00 :00 – Edwin 2015-11-09 17:41:43

+0

如果用戶更改時區設置,則此方法將中斷。 – 2017-02-16 17:59:06

-1

我使用這個解決方案沒有時間在這種情況下,我的日期格式僅比較日期爲yyyy-MM-DD:

NSDateFormatter * formatter = [NSDateFormatter new]; 
[formatter setDateFormat:@"yyyy-MM-dd"]; 
NSString * dateString = [formatter stringFromDate:[NSDate date]; 
NSDate *rdate = [formatter dateFromString:dateString]; 

NSPredicate *datePre = [NSPredicate predicateWithFormat:@"date = %@", rdate];