11

日付ピッカーを使用して、ユーザーに将来の日付を選択させようとしています。私は明らかにcompare:メソッドを使用しましたが、次のコードを実行すると、[NSDate date]と同じ日付であっても、ifステートメントを実行するように指示されます。これが私のコードです:

    if ([datePicker.date compare:[NSDate date]] == NSOrderedAscending) // If the picked date is earlier than today
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hmm, this date is earlier than today" 
                                                    message:@"The date you've selected is earlier than today's date, please pick another" 
                                                   delegate:nil  
                                          cancelButtonTitle:@"Okay, I'll pick another" 
                                          otherButtonTitles:nil];
    // Show the alert
    [alert show];

    // Release the alert
    [alert release];
}
4

3 に答える 3

24

使用できます

[datePicker.date timeIntervalSinceNow]

これは、未来に対して正で過去に対して負の NSTimeInterval (秒単位の double の型定義のみ) を返します。

ドキュメントにあるように、compare は 1 秒未満の比較を提供するため、これを使用して、(将来のいつかではなく) 1 日後に日付を強制することができます。

于 2010-02-13T19:22:55.300 に答える
15

あなたの問題に対する答えはわかりませんが、どうすればそれを回避できますか。

UIDatePickerのminimumDateプロパティを使用するだけで、よりクリーンなアプローチになります。

于 2010-02-13T19:32:20.473 に答える
1

NSDate オブジェクトには日付と時刻の両方が含まれているため、同じ日付の別の日付の前または後に該当する可能性のある同じ日付の日付が多数存在します。

クラス メソッドは、現在のdate日付と時刻を含む日付オブジェクトを返します。

于 2010-02-13T19:28:13.457 に答える