2012-03-07 8 views
2

NSDate型のプロパティが特定の日付と等しいものを選択するオブジェクトの配列をフィルタリングしようとしています。しかし、私は日付を比較し、時間差を無視したいだけです。Objective-C - 日付が等しいpropでオブジェクトを見つける方法?

だから私はとてもとしてNSPredicateを使用しています:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"PropertyWithDate == %@", 
         [NSDate date]]; 

オブジェクトの両方が時間的に日付を記憶しているし、今私が合格していますの値は両方を保持しています。比較中に両方の時間部分を無視するにはどうすればよいですか?

答えて

3

NSDateは、特定のカレンダーとタイムゾーンに関するNSDateの日付部分について話すのが理想的です。

簡単な答えは、日付の午前12時と翌日の午前12時に2つのNSDateを作成し、その間に日付を探すように述語を設定することです:

NSPredicate *firstPredicate = [NSPredicate predicateWithFormat:@"PropertyWithDate > %@", firstDate]; 
NSPredicate *secondPredicate = [NSPredicate predicateWithFormat:@"PropertyWithDate < %@", secondDate]; 

NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubPredicates:[NSArray arrayWithObjects:firstPredicate, secondPredicate, nil]]; 

firstDatesecondDateを構築するために、あなたはNSCalendarcomponents:fromDate:dateFromComponents:メソッドを使用したいと思います。デバイスの現在のデフォルトのカレンダーとタイムゾーンを使用する場合は、[NSCalendar calendar]を使用してカレンダーを使用することができます。

0

NSDatecomponentsを使用して比較を行う必要があります。 WWDC 2011のビデオには、数学と図書館に関する素晴らしいビデオがあります。

詳細については、NSDateComponents class referenceを参照してください。

+0

ありがとうございました。あなたの回答も非常に便利でしたが、裕司はあなたを投稿に導きました。 – stan4th

関連する問題