2012-04-27 83 views
0

私のアプリケーションでは、1つのif-elseサイクルで3つの日付を比較する必要があります。私は開始日、終了日、試験日を持っています。私がチェックしたいのは、テスト日が開始日と終了日の間であるかどうかです。私は25/12/2013に25/04/2012にたstartDateと24/04/2019にendDateにとtestDateを設定した場合日付の比較

if (testDate >= startDate && testDate <= endDate) { 

コードが動作します。しかし、startDateを26/04/2000に、endDateを24/04/2019に設定し、testDateを2013年12月25日に設定すると、コードは機能しません。どうしましたか?

+1

検索は何を起きましたか? – vikingosegundo

+0

はい、オブジェクトのアドレスを比較しています。オブジェクトでサポートされているcompareメソッドを使用する必要があります。 –

答えて

2

日付はこれと同様に比較できます。ただし、最初にtimeIntervalSince1970を呼び出して、日付を整数型の値に変換する必要があります。この場合、タイプNSTimeIntervalの数値が表示されます。

もう1つの方法は、NSDateオブジェクトで呼び出されるcompare:メソッドを使用することです。その場合

、次のように別の日付を比較すると、クラスリファレンスの詳細な結果を与える:

  • 受信機とanotherDateが互いに正確に等しい、 NSOrderedSame

  • レシーバはanotherDate、NSOrderedDescendingより後で時間があります

  • レシーバの方がotherDateよりも早く、NSOrderedAscendingです。

3

Objective-CオブジェクトとCのブール演算子を慎重に比較することはできません。ではなく、の値を比較します。

NSDateクラスのドキュメント、具体的には-compare:メソッドを参照してください。