0

私のアプリケーションでは、1 つの if-else サイクルで 3 つの日付を比較する必要があります。開始日、終了日、テスト日があります。確認したいのは、テスト日が開始日と終了日の間にあるかどうかです。

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

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

4

2 に答える 2

3

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

NSDateクラスのドキュメント、特に-compare:メソッドを見てください。

于 2012-04-27T17:10:39.680 に答える
2

日付はそのように比較できます。timeIntervalSince1970ただし、最初に呼び出して日付を整数型の値に変換する必要があります。この場合、 type の数値が返されますNSTimeInterval

もう 1 つのオプションは、オブジェクトcompare:で呼び出されたメソッドを使用することです。NSDate

その場合、ある日付を別の日付と比較すると、次のようにクラス リファレンスに詳述されている結果が得られます。

  • レシーバーと anotherDate が完全に一致している、NSOrderedSame

  • 受信者は、anotherDate、NSOrderedDescending よりも時間的に遅れています

  • 受信者は、anotherDate、NSOrderedAscending よりも時間的に早いです。

于 2012-04-27T17:15:24.857 に答える